由于IntentReceiver 在某些情况下没有被称为,所以被泄露。
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
mContext.unregisterReceiver(mScreenStateReceiver);
}这是在大量测试设备和Android版本中发现的,最多可达Android4.1.1。我使用旧版以及最新的Eclipse4.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()?这是一个已知的bug:http://code.google.com/p/android/issues/detail?id=29399
有解决办法吗?谢谢你提前解决了这个难题!
克里斯蒂安
发布于 2013-11-21 04:00:26
我建议不要依赖'onAttachedToWindow‘和'onDetachedFromWindow’。您可以添加像“init”和“do”这样的配对操作来执行诸如“注册”和“注销”BroadcastReceiver这样的工作。然后,您可以完全控制以避免这种类型的泄漏。或者,您可以显式地调用onDetachedFromWindow。
https://stackoverflow.com/questions/12671941
复制相似问题