我的英语不好,但我会尽力解释我的问题。
因此,问题是:
1)我有本地服务
2)我启动它,然后绑定(bind)到它。
3)当我即将关闭该服务时,出现问题。我从未执行过类的实现中的 onServiceDisconnected 方法,永远不会调用。如果我手动(从设置中)关闭它,或者通过unbindService或stopService,或者通过unbindService和stopService的组合关闭它- onServiceDisconnected 仍然不会被调用。
我究竟做错了什么?
简短代码如下:protected ServiceConnection mServerConn = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder binder) {
Log.d(LOG_TAG, "onServiceConnected");
}
@Override
public void onServiceDisconnected(ComponentName name) {
Log.d(LOG_TAG, "onServiceDisconnected");
}
}
public void start() {
// mContext is defined upper in code, I think it is not necessary to explain what is it
mContext.bindService(i, mServerConn, Context.BIND_AUTO_CREATE);
mContext.startService(i);
}
public void stop() {
mContext.stopService(new Intent(mContext, ServiceRemote.class));
mContext.unbindService(mServerConn);
}
我正在Android 2.2的模拟器下测试此代码
最佳答案
仅在极端情况下(崩溃/终止)调用onServiceDisconnected。
对于本地服务,这是非常不可能发生的,因为所有应用程序组件通常都在同一进程中运行……这意味着,除非您有意解除绑定(bind)或销毁该服务,否则它应保持连接状态,或与使用该组件的组件一起消亡。