尽管在 onDestroy 或 onPause 中解除绑定,但仍获得 "Activity <activityname> has leaked ServiceConnection"
Getting "Activity <activityname> has leaked ServiceConnection" despite unbinding it in onDestroy or onPause
我 运行 在我的 MainActivity 中使用 startService 创建了一个自定义绑定服务,然后绑定到它。我在其他活动之一中做同样的事情。但是每当我退出 activity(并且服务保持 运行ning 正如它预期的那样)或什至完全关闭应用程序时,我都会在这些方面遇到错误。
09-19 01:58:11.660 20750-20750/***.rs E/ActivityThread: Activity ***.rs.OpenArticle has leaked ServiceConnection ***.rs.OpenArticle@e2e8d7d that was originally bound here
android.app.ServiceConnectionLeaked: Activity *** has leaked ServiceConnection ***@e2e8d7d that was originally bound here
at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:1092)
at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:986)
at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1303)
at android.app.ContextImpl.bindService(ContextImpl.java:1286)
at
...
我在两种情况下都在 onDestroy 中取消绑定服务,我也尝试过其他函数,如 onUserLeaveHint 和 onPause,但似乎都不起作用。
这是我在 OpenArticle 文件中尝试取消绑定服务的代码。有趣的是,失败消息从未显示在 logcat.
中
@Override
protected void onUserLeaveHint() {
try {
unbindService(sConn);
} catch (RuntimeException e) {
Log.d("OpenArticle", "Service unbind not successful.");
}
super.onUserLeaveHint();
}
实际上,这并没有真正影响应用程序的任何功能,但我似乎还是做错了什么。
您应该在 @Override protected void onStop()
中解除绑定您的服务,因为 onDestroy 可能不会被调用然后您离开您的 activity。
我 运行 在我的 MainActivity 中使用 startService 创建了一个自定义绑定服务,然后绑定到它。我在其他活动之一中做同样的事情。但是每当我退出 activity(并且服务保持 运行ning 正如它预期的那样)或什至完全关闭应用程序时,我都会在这些方面遇到错误。
09-19 01:58:11.660 20750-20750/***.rs E/ActivityThread: Activity ***.rs.OpenArticle has leaked ServiceConnection ***.rs.OpenArticle@e2e8d7d that was originally bound here
android.app.ServiceConnectionLeaked: Activity *** has leaked ServiceConnection ***@e2e8d7d that was originally bound here
at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:1092)
at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:986)
at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1303)
at android.app.ContextImpl.bindService(ContextImpl.java:1286)
at
...
我在两种情况下都在 onDestroy 中取消绑定服务,我也尝试过其他函数,如 onUserLeaveHint 和 onPause,但似乎都不起作用。
这是我在 OpenArticle 文件中尝试取消绑定服务的代码。有趣的是,失败消息从未显示在 logcat.
中@Override
protected void onUserLeaveHint() {
try {
unbindService(sConn);
} catch (RuntimeException e) {
Log.d("OpenArticle", "Service unbind not successful.");
}
super.onUserLeaveHint();
}
实际上,这并没有真正影响应用程序的任何功能,但我似乎还是做错了什么。
您应该在 @Override protected void onStop()
中解除绑定您的服务,因为 onDestroy 可能不会被调用然后您离开您的 activity。