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);