【发布时间】:2012-02-16 19:52:17
【问题描述】:
我正在通过单击特定活动中的按钮打开发送菜单:
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 com.android.internal.app.ResolverActivity$1@405ab288 that was originally registered here. Are you missing a call to unregisterReceiver()?
没有其他事情发生 - 应用继续运行而没有问题。
搜索表明上面的代码显然已经注册了一个 BroadcaseReceiver,并且需要取消注册(通过 unregisterReceiver),可能在 onResume(或 onPause)期间。取消注册接收器的签名表明单个参数应该是 BroadcastReceiver 实例(有意义)。
我的问题是 - BroadcastReceiver 的引用在哪里? AFAICT 用于打开菜单的方法不返回 BroadcastReceiver - 我如何找到并引用适当的方法来取消注册?
TYIA
(应该注意我在三星 Galaxy SII 上调试,this thread 表示它可能是特定于设备的错误?)
【问题讨论】:
-
我的 nexus 4.0.4 也有同样的问题
-
@PedroRainho 我从来没有解决这个问题 - 如果你找到答案,请回帖。谢谢。
标签: android