我正在使用AIDL在客户端活动和服务之间执行IPC。在将服务与bindService()绑定时,ServiceConnection.onServiceConnected()似乎正在运行。但是,在发布服务时调用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" );
}
};任何帮助都是非常感谢的。提前谢谢。
发布于 2010-01-11 16:44:23
我不明白你链接的问题和这个问题有什么不同?
您的服务没有失败--您是手动调用unbindService()的,因此不会发生导致调用onServiceDisconnected()的错误情况。
发布于 2010-01-11 17:20:13
当与服务的连接丢失时,将调用OnServiceDisconnected()。当托管服务的进程崩溃或被终止时,通常会发生这种情况。
以更简单的方式:
当与服务的连接意外断开时--即其进程崩溃时,将调用此函数。
希望这能解决你的问题。
https://stackoverflow.com/questions/2040625
复制相似问题