2

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

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

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

可以在此处找到 示例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

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

基督教

4

1 回答 1

0

我建议不要依赖“onAttachedToWindow”和“onDetachedFromWindow”。您可以添加像“init”和“destroy”这样的配对操作来完成像“register”和“unregister”BroadcastReceiver 这样的工作。然后您可以完全控制以避免这种类型的泄漏。或者,您可以显式调用 onDetachedFromWindow。

于 2013-11-21T04:00:26.427 回答