我有一个在后台运行的网络服务。我mConnection
在 Activity中有这个全局变量
protected ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder binder) {
serviceobject = ((NetworkService.MyBinder) binder).getService();
}
public void onServiceDisconnected(ComponentName className) {
serviceobject = null;
}
};
然后我在活动中绑定服务onCreate(..)
使用
bindService(new Intent(this, NetworkService.class),
mConnection,Context.BIND_AUTO_CREATE);
NetworkService 类有一个内部类 MyBinder
public class MyBinder extends Binder {
NetworkService getService() {
return NetworkService.this;
}
}
现在要从活动中调用任何服务方法,我使用serviceobject
并为每个方法调用创建一个AsyncTask
。(我知道从活动中调用服务方法会使使用服务无效。我将其用于不涉及的轻型方法计算量大)
这有助于我直接处理来自Service
使用serviceobject
. 我在Activity
's中取消绑定服务onDestroy()
@Override
protected void onDestroy()
{
unbindService(mConnection);
super.onDestroy();
}
这是最好的方法还是我在某个地方错了?