繁体   English   中英

应用在后台运行时的Android Broadcast Receiver

[英]Android Broadcast Receiver when app is running in background

已经有很多与此类似的问题,但是没有一个解决我的问题(请阅读整个问题)。

在我的应用程序中,我需要监听ACCESSORY_DETTACHED的意图操作,但是只有在应用程序正在运行时(在前台或后台)才应进行处理,而在应用程序未运行时则不应进行处理。

我知道有2种选择。 要在Manifest中注册BroadcastReceiver(不会起作用,因为我不希望在我的应用未运行时调用onReceive)或将其注册到Activity中(但是为了避免泄漏,我不得不在某个地方注销它,我不能在onStop中执行此操作,因为我也需要它在后台运行,因此不建议使用onDestroy)。

我发现我可以在Application类中注册接收器,并且它可以工作,但是仍然无法在任何地方注销它。 这种方法会导致泄漏吗? 我还要打扰吗? 还有其他可能性吗?

这种方法会导致泄漏吗?

那将取决于您对自定义Application子类和BroadcastReceiver

通过从ApplicationonCreate()方法调用registerReceiver()不会泄漏接收器。 我们保留术语“泄漏”,以便在我们不希望使用内存时使用它,并且您希望接收器在您的进程运行期间一直工作。

但是, 接收器可能会泄漏内存,具体取决于它保存的内容(如果有的话),因为它会持续很长时间。 自定义Application其他内容可能会泄漏,具体取决于您在Application正在做什么。

因此,您的方法本身不会是内存泄漏,但是您将需要仔细检查接收器和Application ,以确保在此过程中不会引入其他泄漏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM