java – ChooserActivity泄露了IntentReceiver

E/ActivityThread(  655): Activity com.android.internal.app.ChooserActivity has
leaked IntentReceiver com.android.internal.app.ResolverActivity$1@412f4f38 
that was originally registered here. 

Are you missing a call to unregisterReceiver()? E/ActivityThread(  655): 
android.app.IntentReceiverLeaked: 
Activity com.android.internal.app.ChooserActivity has leaked IntentReceiver 
com.android.internal.app.ResolverActivity$1@412f4f38 that was originally 
registered here. Are you missing a call to unregisterReceiver()?

>这个错误是什么意思?
>既然应用程序继续工作,我应该忽略它吗?
>我该如何解决

当我在发布here的例程后从手机图库中选择图像时,会发生这种情况.
正是当我按下活动布局中定义的浏览图库按钮时.

完整的LOGCAT:

E/ActivityThread(  655):    at android.app.LoadedApk$Receiverdispatcher.<init>(LoadedApk.java:763)
E/ActivityThread(  655):    at android.app.LoadedApk.getReceiverdispatcher(LoadedApk.java:567)
E/ActivityThread(  655):    at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1043)
E/ActivityThread(  655):    at android.app.ContextImpl.registerReceiver(ContextImpl.java:1030)
E/ActivityThread(  655):    at android.app.ContextImpl.registerReceiver(ContextImpl.java:1024)
E/ActivityThread(  655):    at android.content.Contextwrapper.registerReceiver(Contextwrapper.java:341)
E/ActivityThread(  655):    at com.android.internal.content.PackageMonitor.register(PackageMonitor.java:65)
E/ActivityThread(  655):    at com.android.internal.app.ResolverActivity.onCreate(ResolverActivity.java:99)
E/ActivityThread(  655):    at com.android.internal.app.ChooserActivity.onCreate(ChooserActivity.java:53)
E/ActivityThread(  655):    at android.app.Activity.performCreate(Activity.java:4465)
E/ActivityThread(  655):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
E/ActivityThread(  655):    at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:1920)
E/ActivityThread(  655):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
E/ActivityThread(  655):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
E/ActivityThread(  655):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
E/ActivityThread(  655):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/ActivityThread(  655):    at android.os.Looper.loop(Looper.java:137)
E/ActivityThread(  655):    at android.app.ActivityThread.main(ActivityThread.java:4424)
E/ActivityThread(  655):    at java.lang.reflect.Method.invokeNative(Native Method)
E/ActivityThread(  655):    at java.lang.reflect.Method.invoke(Method.java:511)
E/ActivityThread(  655):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
E/ActivityThread(  655):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
E/ActivityThread(  655):    at dalvik.system.NativeStart.main(Native Method)

解决方法:

我知道这个比较老了,但是我遇到了同样的问题,并且认为我偶然发现了事故的答案,尽管这很奇怪.

在模拟器中,如果您执行某些操作以导致应用程序选择器(例如共享意图)或选择图库应用程序,则只有一个应用程序并且在您不选择应用程序的情况下自动加载应用程序时,它似乎只有一个例外.

例如,您要选择图像.如果您运行例程来选择图像,您很可能会在手机的选择器对话框中显示一些选项.但是在模拟器上,除了认的gallery应用程序之外,您很少有其他任何东西.

如果只有一个应用程序加载,则会出现异常.

如果您有多个应用程序可供选择,您将不会遇到异常.

如果要共享文本文件,也会发生同样的情况.在模拟器上,文本文件自动直接加载Messaging应用程序,您将获得异常.

如果您设置了电子邮件应用程序,它将在选择器中显示两个应用程序.你没有例外.

我相信你可以安全地忽略它,因为它似乎是一个内部错误消息.

您可以尝试通过安装第二个库应用程序来重现这一点,以查看它没有创建错误消息.

我刚注意到这也描述了相同的建议https://stackoverflow.com/a/10290486/935779

如果你真的想要避免这种异常,它有一个更复杂的工作.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...