的IntentReceiver正在泄露由於onDetachedFromWindow 不會被調用在某些情況下。的Android - IntentReceiver泄漏/漏水/泄露
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
mContext.unregisterReceiver(mScreenStateReceiver);
}
這是發現與大量的測試設備和Android版本到Android 4.1.1。我使用老版本以及最新的Eclipse 4.2.1進行編譯,其中各種SDK Tool版本高達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
有沒有解決辦法?非常感謝您解決這一挑戰!
基督教
其更好地註銷從的onStop接收機(),做到: 如果(isFinishing()){ mContext.unregisterReceiver(mScreenStateReceiver); } –
非常感謝您的提示!我在自定義視圖中使用onDetachedFromWindow作爲庫的一部分。所以我不能直接使用onStop,而寧願圖書館的用戶不必處理這個問題,我在onStop期間給我的圖書館打了一個額外的電話。 – Mobiledata
我會建議創建一個公共方法,用戶調用以阻止自定義視圖上的接收器。如果您使用CustomView廣告,我想你有一個啓動方法,那麼爲什麼不添加一個方法來停止。我知道隱式釋放資源會更好,但我認爲添加另一個方法調用比泄漏更好。只需在您的文檔中明確。 –