2

マニフェストでは、アクティビティのみがあり、レシーバーにはサービスがありません。アクティビティを終了すると、logcat に次のように表示されます。

E/ActivityThread: Activity com.example.some.activity has leaked IntentReceiver com.android.internal.policy.impl.PhoneWindow$1@41bbe958 that was originally registered here. Are you missing a call to unregisterReceiver()?
android.app.IntentReceiverLeaked: Activity com.example.some.activity has leaked IntentReceiver com.android.internal.policy.impl.PhoneWindow$1@41bbe958 that was originally registered here. Are you missing a call to unregisterReceiver()?
at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:792)
at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:593)
at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1127)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1114)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1108)
at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:365)
at com.android.internal.policy.impl.PhoneWindow.registerBroad(PhoneWindow.java:215)
at com.android.internal.policy.impl.PhoneWindow.<init>(PhoneWindow.java:243)
at com.android.internal.policy.impl.Policy.makeNewWindow(Policy.java:63)
at com.android.internal.policy.PolicyManager.makeNewWindow(PolicyManager.java:59)
at android.app.Activity.attach(Activity.java:4981)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2008)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
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:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

悲しいことに、受信者を登録していないので、何を登録解除すればよいかわかりません

4

1 に答える 1

-2

アクティビティの停止時にレシーバーの登録を解除する必要があります。

@Override
protected void onStop()
{
    unregisterReceiver(yourReceiver);
    super.onStop();
}

これで問題が解決することを願っています。

于 2013-06-19T09:21:15.493 に答える