绑定服务调用服务里的方法
activity绑定服务,等待服务被绑定成功后,返回服务里的内部类对象,activity在连接成功后拿到服务里的内部类对象,间接调用服务里的方法
A. 在activity中绑定服务
intent = new Intent(this,MyService.class); mConn = new MyConn(); Log.i(TAG, "1. 在activity中绑定服务"); bindService(intent, mConn, BIND_AUTO_CREATE);
B. 服务被绑定成功
@Override public IBinder onBind(Intent intent) { Log.e(TAG, "2. 服务被绑定成功"); Log.e(TAG, "3. 在服务里创建一个内部类,在onBind方法中返给activity"); return new Boss(); }
C. 在服务里创建一个内部类,在onBind方法中返给activity
/**
* 服务里的内部类
* 非你莫属内部人员
*
public class Boss extends Binder{ public void qianShouMM(int money){ if (money > 1000) { methodInService(); }else { Toast.makeText(MyService.this, "没钱该干嘛干嘛去", 0).show(); } } }
D. activity和Service连接成功了
/** * activity和Service的连接通道 */ private class MyConn implements ServiceConnection { @Override public void onServiceDisconnected(ComponentName name) { } @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.i(TAG, "4. activity和Service连接成功了"); Log.i(TAG, "5. 把IBinder强转成服务里的内部类"); mService = (Boss)service; } }
E. 把IBinder强转成服务里的内部类
mService = (Boss)service;
F. 用服务里的内部类间接调用服务里的方法
mService.Boss(1000000);
最后,关注【码上加油站】微信公众号后,有疑惑有问题想加油的小伙伴可以码上加入社群,让我们一起码上加油吧!!!