我只在一台设备上以严格模式崩溃(LG G2 Android 4.2.2)。这发生在我点击微调器(dropDown)然后点击列表下拉列表外的区域然后离开父活动。
05-20 14:39:55.099 20042-20042/** E/StrictMode? null
android.app.IntentReceiverLeaked: Activity **.Activity has leaked IntentReceiver android.widget.ListPopupWindow$1@4278add0 that was originally registered here. Are you missing a call to unregisterReceiver()?
at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:795)
at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:596)
at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1405)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1385)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1379)
at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:423)
at android.widget.ListPopupWindow.show(ListPopupWindow.java:546)
at android.widget.Spinner$DropdownPopup.show(Spinner.java:983)
at android.widget.Spinner.performClick(Spinner.java:610)
at android.view.View$PerformClick.run(View.java:17634)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5171)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:564)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:-1)
在onPause()
方法中取消注册您的接收器。您必须在onResume()
中注册接收器并在onPause()
中取消注册以防止内存泄漏
@Override
protected void onResume() {
super.onResume();
registerReceiver(yourReceiver);
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(yourReceiver);
}