我从一个按钮,点击特定活动打开发送菜单泄露IntentReceiver:从共享菜单
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_TEXT, "meh");
try {
startActivity(Intent.createChooser(i, "pfft"));
} ...
工作正常,但打的时候“返回”键,关闭它,logcat的说
Activity com.android.internal.app.ChooserActivity has leaked IntentReceiver [email protected] that was originally registered here. Are you missing a call to unregisterReceiver()?
没有其他的事情发生 - 应用程序继续运行没有问题。
搜索说,显然上面的代码已经注册了一个BroadcaseReceiver,并且它需要在onResume(或onPause)过程中注销(通过unregisterReceiver)。注销接收者的签名表示单个参数应该是BroadcastReceiver实例(有意义)。
我的问题是 - 哪里是对BroadcastReceiver的引用? AFAICT用于打开菜单的方法不会返回BroadcastReceiver - 我如何找到并引用合适的一个来取消注册?
TYIA
(要注意的是,我调试运行在三星Galaxy SII,并this thread表明它可能是一个与设备相关的bug?)
我与我的nexus s有同样的问题4.0.4 – 2012-04-09 21:40:38
@PedroRainho我从来没有得到这个解决 - 如果你找到答案,请回发。谢谢。 – momo 2012-04-10 15:08:18