我的英语不好,但我会尽力解释我的问题。

因此,问题是:
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)或销毁该服务,否则它应保持连接状态,或与使用该组件的组件一起消亡。

09-20 21:55