2

状況によっては onDetachedFromWindowが呼び出されないため、IntentReceiverがリークいます。

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

これは、Android 4.1.1 までの多数のテスト デバイスと Android バージョンで発見されました。20.0.3までのさまざまなSDKツールバージョンで、古いものと最新のEclipse 4.2.1を使用してコンパイルしました。

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」などの対になった操作を追加して、BroadcastReceiver の「登録」と「登録解除」などのジョブを実行できます。次に、このタイプのリークを回避するために完全に制御できます。または、onDetachedFromWindow を明示的に呼び出すこともできます。

于 2013-11-21T04:00:26.427 に答える