创建一个MyService在里面写入
@Override
public IBinder onBind(Intent intent) {
return new MyBinder();
}
/**
*
* 通过这个方法,可以在 activity 中拿到 MyService 对象,就可以调用他的方法了
*
*/
class MyBinder extends Binder {
public MyService getService(){
return MyService.this;
}
}
在 MainActivity 中 connection 拿到 MyService 对象
/**
* 把 service 链接起来
* 拿到 service 对象
*/
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
//返回一个MsgService对象
myService = ((MyService.MyBinder) service).getService();
}
};
在 MyActivity 中绑定 Service
// 绑定 service
Intent bindIntent = new Intent(context, MyService.class);
bindService(bindIntent, connection, BIND_AUTO_CREATE);
上面3步实现了,activity 调用 service中的方法
比如调用 myService.startDownLoad(); 模拟下载文件
那么下载文件的进度 service 怎样通知activity呢
可以在 MyService 中写回调方法,在 MainActivty 中调用
如:MyService 中
/**
* 写一个接口回调,给 activity 拿到返回的值
*/
private MyProgressListener myProgressListener;
public void setOnProgressListener(MyProgressListener myProgressListener) {
this.myProgressListener = myProgressL