0

時々、アクティビティのリークを報告するlogcatメッセージを見ることができます。例えば:

Activity com.android.internal.app.ChooserActivity has leaked IntentReceiver com.android.internal.app.ResolverActivity$1@4144d6e8 that was originally registered here. Are you missing a call to unregisterReceiver()?

android.app.IntentReceiverLeaked: Activity com.android.internal.app.ChooserActivity has leaked IntentReceiver com.android.internal.app.ResolverActivity$1@4144d6e8 that was originally registered here. Are you missing a call to unregisterReceiver()?
     at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:763)
     at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:567)
     at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1081)
     at android.app.ContextImpl.registerReceiver(ContextImpl.java:1068)
     at android.app.ContextImpl.registerReceiver(ContextImpl.java:1062)
     at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:341)
     at com.android.internal.content.PackageMonitor.register(PackageMonitor.java:65)
     at com.android.internal.app.ResolverActivity.onCreate(ResolverActivity.java:99)
     at com.android.internal.app.ChooserActivity.onCreate(ChooserActivity.java:53)
     at android.app.Activity.performCreate(Activity.java:4465)
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2033)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104)
     at android.app.ActivityThread.access$600(ActivityThread.java:132)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157)
     at android.os.Handler.dispatchMessage(Handler.java:99)
     at android.os.Looper.loop(Looper.java:137)
     at android.app.ActivityThread.main(ActivityThread.java:4575)
     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:789)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
     at dalvik.system.NativeStart.main(Native Method)

私の質問は、このアクティビティリークはどのように検出されるのですか?

4

1 に答える 1

1

コード内のメモリ リークを検出するには、Eclipse 用のメモリ アナライザー ツールプラグインをインストールする必要があります。

MAT の使用方法を理解するには、次のリンクを参照してください: http://android-developers.blogspot.in/2011/03/memory-analysis-for-android.html

これは非常に便利なプラグインです。最初は理解するのが少し難しいですが、使用するとすぐにメモリ リークを検出できます。

お困りの際は、いつでもご相談ください。

ありがとうございました :)

于 2012-07-25T14:36:41.700 に答える