[英]Android Broadcast Receiver when app is running in background
已经有很多与此类似的问题,但是没有一个解决我的问题(请阅读整个问题)。
在我的应用程序中,我需要监听ACCESSORY_DETTACHED的意图操作,但是只有在应用程序正在运行时(在前台或后台)才应进行处理,而在应用程序未运行时则不应进行处理。
我知道有2种选择。 要在Manifest中注册BroadcastReceiver(不会起作用,因为我不希望在我的应用未运行时调用onReceive)或将其注册到Activity中(但是为了避免泄漏,我不得不在某个地方注销它,我不能在onStop中执行此操作,因为我也需要它在后台运行,因此不建议使用onDestroy)。
我发现我可以在Application类中注册接收器,并且它可以工作,但是仍然无法在任何地方注销它。 这种方法会导致泄漏吗? 我还要打扰吗? 还有其他可能性吗?
这种方法会导致泄漏吗?
那将取决于您对自定义Application
子类和BroadcastReceiver
。
通过从Application
的onCreate()
方法调用registerReceiver()
不会泄漏接收器。 我们保留术语“泄漏”,以便在我们不希望使用内存时使用它,并且您希望接收器在您的进程运行期间一直工作。
但是, 接收器可能会泄漏内存,具体取决于它保存的内容(如果有的话),因为它会持续很长时间。 自定义Application
其他内容可能会泄漏,具体取决于您在Application
正在做什么。
因此,您的方法本身不会是内存泄漏,但是您将需要仔细检查接收器和Application
,以确保在此过程中不会引入其他泄漏。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.