我有一个Android库,需要一个BroadcastReceiver,它在对象构造函数中注册。它根据不断变化的互联网状态对该对象执行操作。但是,我遇到了关于泄露的接收器的错误消息,因为我不称之为取消注册。从Android上的非活动取消注册BroadcastReceiver
当我没有关于活动何时结束的信息时,如何以及在哪里可以取消注册?由于我只提供将由一个Activity实例化的类,所以没有onPause,onClose方法。
我有一个Android库,需要一个BroadcastReceiver,它在对象构造函数中注册。它根据不断变化的互联网状态对该对象执行操作。但是,我遇到了关于泄露的接收器的错误消息,因为我不称之为取消注册。从Android上的非活动取消注册BroadcastReceiver
当我没有关于活动何时结束的信息时,如何以及在哪里可以取消注册?由于我只提供将由一个Activity实例化的类,所以没有onPause,onClose方法。
您可以尝试将您的接收器保存为静态。我认为如果你注册两次相同的接收器,只会得到这个错误。
如果失败了,也可以尝试调用context.getApplicationContext()。registerBroadcastReceiver()而不是使用活动上下文。
您是否应该扩展Activity
,使用Android的工作流程正常工作,然后让您的用户扩展您的活动?
这只是一个建议,但它肯定会解决您所描述的问题,因为您可以在onCreate()
上注册接收器并在onDestroy()
上取消注册。
使用context.getApplicationContext()做了诀窍。谢谢! – nicobatu 2012-02-22 20:07:31