Android 安卓解除绑定服务

Android 安卓解除绑定服务,android,android-intent,Android,Android Intent,您好,我有一个小聊天应用程序,它绑定到我的服务,该服务创建与我的服务器的tcp/ip连接。 我使用aidl顺便说一句 我的问题是,我不知道如何处理屏幕方向,尤其是销毁方法 我希望我的服务一直在线,我不想在应用程序破坏时停止它 目前,我使用“onDestroy”方法unbindService(conn)来解决“泄漏的连接问题” 活动被销毁后,当重新创建时,它将冻结。 谢谢,下面是一些代码片段 serviceIntent = new Intent(getApplicationContext(),Ch

您好,我有一个小聊天应用程序,它绑定到我的服务,该服务创建与我的服务器的tcp/ip连接。 我使用aidl顺便说一句

我的问题是,我不知道如何处理屏幕方向,尤其是销毁方法

我希望我的服务一直在线,我不想在应用程序破坏时停止它

目前,我使用“onDestroy”方法unbindService(conn)来解决“泄漏的连接问题”

活动被销毁后,当重新创建时,它将冻结。 谢谢,下面是一些代码片段

serviceIntent = new Intent(getApplicationContext(),ChatService.class);
    boolean result = bindService(serviceIntent, conn,Context.BIND_AUTO_CREATE);
    startService(new Intent(getApplicationContext(),ChatService.class));
    Log.d(TAG, "Service binded");

@Override
protected void onDestroy() {
    Log.d(TAG, "ON DESTROY");
    unbindService(conn);
    super.onDestroy();
}

查看
服务
startForeground()
()。如果您可以让您的
服务
停止,但重新启动,请查看
onStartCommand()
START\u STICKY

每次都会发生这种情况,就像您正在经历的那样。实际上,拥有一个bindedService会使该活动在内存中的保存时间比其他活动长。我建议不要脱离onDestory中的服务。我会根据命令解除您的服务绑定,就像一个注销按钮,而不是生命周期事件


因此,当屏幕旋转时,您不会解除绑定,它只会与已运行的服务重新绑定。如果您的用户终止了活动,那么服务应该在某个时候得到清理,因为系统应该看到绑定的服务正在运行,而没有连接任何东西,然后它将被系统清理。

服务没有UI,因此您可以说这不取决于您的服务,而取决于您的活动。在
onStartCommand()
中返回
START\u STICKY
,它告诉您,即使在您解除绑定时,它也必须运行,基本上您可以随时绑定/解除绑定到运行服务的持久性(在安卓操作系统决定杀死它之前不能持久)


在您的活动中覆盖
onConfigurationChange()
方法,并且不在其中执行任何操作,然后在清单中使用
android:configChanges=“orientation”

您好,感谢您的回复。我从onDestroy中删除unbind,然后得到“Activity has leaked ServiceConnection,它最初绑定在这里”,并使我的应用程序崩溃。