【问题标题】:AIDL ServiceConnection.OnServiceDisconnected() not called未调用 AIDL ServiceConnection.OnServiceDisconnected()
【发布时间】:2010-01-11 08:28:07
【问题描述】:

我正在使用 AIDL 在客户端活动和服务之间进行 IPC。 ServiceConnection.onServiceConnected() 似乎在使用 bindService() 绑定服务时运行。但是,在释放服务时调用 unbindService() 后,没有迹象表明 ServiceConnection.onServiceDisconnected() 曾经运行过。任何人都可以提供任何关于为什么会发生这种情况的见解吗?

在此处找到有关此问题的另一个线程: When does ServiceConnection.onServiceDisconnected() get called?

这并不能完全回答我的问题。我的服务没有因任何异常而失败。

这是我的服务绑定和发布代码:

//bind service
private void initService()
{
    conn = new NetServiceConnection();
    Intent i = new Intent();
    i.setClassName( "framework.network", "framework.network.NetService" );
    bindService( i, conn, Context.BIND_AUTO_CREATE);//This returns TRUE
}

//unbind service
private void releaseService()
{
    unbindService(conn);
    conn = null;
}

class NetServiceConnection implements ServiceConnection
{

    //THIS RUNS FINE
    public void onServiceConnected(ComponentName name, IBinder service) {
         mService = INetService.Stub.asInterface(service);
          Log.d( "ADDERSERVICECLIENT","onServiceConnected" );
    }

    //THIS DOESN'T RUN
    public void onServiceDisconnected(ComponentName name) {
        mService = null;
        Log.d( "ADDERSERVICECLIENT","onServiceDisconnected" );
    }
};

非常感谢任何帮助。提前致谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    我不明白你链接的问题与这个问题有何不同?

    您的服务没有失败 - 您正在手动调用 unbindService(),因此不会发生会导致调用 onServiceDisconnected() 的错误情况。

    【讨论】:

      【解决方案2】:

      当与服务的连接丢失时调用 OnServiceDisconnected()。这通常发生在托管服务的进程崩溃或被终止时。

      以更简单的方式:::

      当与服务的连接意外断开时调用此函数——即其进程崩溃。

      希望这能解决你的问题。

      【讨论】:

        猜你喜欢
        • 2010-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多