- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
每次在我的应用中按下 Back
按钮时,我都会在 LogCat 中收到此异常:
Activity has leaked ServiceConnection com.android.vending.licensing.LicenseChecker@471cc039 that was originally bound here
onCreate()
中导致此泄漏的代码是:
mLicenseCheckerCallback = new MyLicenseCheckerCallback();
mChecker.checkAccess(mLicenseCheckerCallback);
如何消除这种泄漏?
我尝试不将 MyLicenseCheckerCallback 分配给成员,认为当 Activity 进行时 onPause()
对回调的引用是造成泄漏的原因:
mChecker.checkAccess(new MyLicenseCheckerCallback());
但这并没有消除泄漏。
更新:感谢@zapl 在下方的评论,我查看了 Google 的 LicenseChecker.java
:
/** Unbinds service if necessary and removes reference to it. */
private void cleanupService() {
if (mService != null) {
try {
mContext.unbindService(this);
} catch (IllegalArgumentException e) {
// Somehow we've already been unbound. This is a non-fatal error.
Log.e(TAG, "Unable to unbind from licensing service (already unbound)");
}
mService = null;
}
}
起初我以为我可能忽略了调用它,但我仔细检查了一下,我 am 在我的 Activity 的 中调用
.mChecker.onDestroy();
>onDestroy()
我还在 LicenseChecker.java
中检查了 onDestroy()
,它 正在 调用 unbindService
:
/**
* Inform the library that the context is about to be destroyed, so that
* any open connections can be cleaned up.
* <p>
* Failure to call this method can result in a crash under certain
* circumstances, such as during screen rotation if an Activity requests
* the license check or when the user exits the application.
*/
public synchronized void onDestroy() {
cleanupService();
mHandler.getLooper().quit();
}
那么,到底发生了什么?
这是 LVL 中的错误吗?
最佳答案
我也遇到了同样的问题,根据您的更新和 zapl 的评论,我发现问题出在您使用的模拟器上。
此模拟器没有 Google Play API,LVL 无法绑定(bind)到服务,使连接保持打开状态,最后 LVL 无法通过 onDestroy 调用关闭它。
只需使用 Google APIs 而不是 Android x.x 创建一个新的 AVD 并在那里尝试您的代码,如果您在创建新的 AVD 时没有在 Target 下拉菜单中找到 Google APIs,请使用 Android SDK 管理器下载它。
关于android - LicenseChecker checkAccess泄漏ServiceConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11992859/
无法清除输出流:java.net.SocketException:关闭失败:EBADF(错误文件编号) 有没有人得到这个,有没有解决这个异常的方法? 最佳答案 这可能意味着您没有写入该文件的权限或者它
我很困惑。 我有一个我认为需要实现服务的应用程序。该服务特定于应用程序;当应用程序实际死亡或被手动终止时,该服务就会消失。应用程序将与服务保持持续通信,最好是通过服务本身的 Activity 调用方法
调用时出现以下异常: requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 2089-2089/? E/ActivityThread﹕ Se
这是调用我的服务的类: public class TicketList extends ListActivity { private ArrayList alTickets = new ArrayLi
我尝试将代码集成到 Blundell's in-app purchasing example 中进入我自己的应用程序,它几乎可以正常工作。我做了一个名为 shop.java 的 Activity ,它
我在我的应用程序中使用 TTS。在 onPuase 方法期间,我使用以下代码停止引擎。问题是每当我暂停 Activity 说使用主页按钮时,我都会收到粘贴在日志猫部分中的错误。我从日志 cat 中了解
我在搞乱 Android 服务,我发现当我绑定(bind)到服务时,ServiceConnection.onServiceConnected() 会被相当可预测地调用。 但是,我的 onService
我有一个带有私有(private)字符串属性的MainActivity。在我的代码中,我有以下内容: private ServiceConnection mTransactionServiceConn
我打开一个应用程序做了一些事情,然后应用程序崩溃了。我再次打开它并收到此错误。我想知道这个错误的原因和解决方法。谁能帮忙。 15 01:25:59.698 31122-31122/com.my
我在 SO 上找到并阅读了各种帖子,其中提到您应该使用 getApplicationContext()绑定(bind)到 Service 时- 而不是 this (在 Activity 中)或 get
我正在开发绑定(bind)到本地服务的 Activity (在 Activity 的 onCreate 中): bindService(new Intent(this, CommandService.
我有一个与此相关的问题 question @mnish 大约一年前问过这个问题。 请看一下他的问题和代码。他实现了一个 ServiceConnection() 并将其传递给 bindService()
我有几个 Android Service,我想在我的 Activity 中绑定(bind)它们,因此我可以监视用户的多个操作。 为了能够绑定(bind)每个服务,我将有多个服务,我是否需要在我的 Ac
我正在使用启动 IntentService 的 BraodCastReceiver。一切看起来都很好,但我收到这个错误,我不知道它的来源: android.app.ServiceConnectionL
我有一个在启动时使用文字转语音的应用程序。一切似乎都运行良好,运行该应用程序时我没有遇到任何问题。但是,每次应用程序启动时,我都会收到一个 LogCat 错误,提示我的文本到语音转换中存在泄漏的 Se
我有一个非常简单的 Activity : public class MainActivity extends Activity { private Intent serviceInt
我正在使用 AIDL 在客户端 Activity 和服务之间执行 IPC。 ServiceConnection.onServiceConnected() 似乎在使用 bindService() 绑定(
我让这个应用程序监听传入的消息并大声朗读它们。问题是我退出时出现以下错误 12-21 15:45:29.949: E/ActivityThread(566): Activity mo.rach.col
能否请您向我解释一下,当我们绑定(bind)到服务但从不启动它然后解除绑定(bind)时会发生什么?我收到“Activity 泄露了一个服务连接错误”,但我不明白为什么。 我的服务: 包 com.ex
我在这里查看 Android 应用内结算教程: http://developer.android.com/guide/google/play/billing/billing_integrate.htm
我是一名优秀的程序员,十分优秀!