Android - IntentReceiver泄漏/泄漏/泄露

时间:2012-10-01 10:56:33

标签: java android android-activity memory-leaks

由于在某些情况下onDetachedFromWindow 未被调用 IntentReceiver 正在泄露

@Override
 protected void onDetachedFromWindow() {
  super.onDetachedFromWindow();
  mContext.unregisterReceiver(mScreenStateReceiver);
 }

这是在大量测试设备和Android版本到Android 4.1.1之前发现的。我使用旧的以及最新的Eclipse 4.2.1编译,使用各种SDK工具版本,最高可达20.0.3。

示例 LogCat 可在此处找到: https://developers.google.com/mobile-ads-sdk/community/discussion?place=msg%2Fgoogle-admob-ads-sdk%2FVYSun9iD8tg%2FL3t6oSlrCbYJ

Activity myActivity has leaked IntentReceiver com.adsdk.sdk.banner.AdView that
was originally registered here. Are you missing a call to unregisterReceiver()?

认为这是已知错误http://code.google.com/p/android/issues/detail?id=29399

有解决方法吗?非常感谢您提前解决这一挑战!

基督教

1 个答案:

答案 0 :(得分:0)

我建议不要依赖'onAttachedToWindow'和& 'onDetachedFromWindow'。你可以添加配对操作,如'init'和amp; “破坏”来完成像'注册'这样的工作。 '取消注册'BroadcastReceiver。然后你可以完全控制以避免这种类型的泄漏。或者,您可以明确地调用onDetachedFromWindow。