小编Sud*_*hee的帖子

服务中的BroadcastReceiver:设计问题

我的应用需要收听广播事件(HEADSET事件)并采取相应行动.我发现HEADSET事件不能通过minifest接收器使用,因为此事件启用了标志FLAG_RECEIVER_REGISTERED_ONLY.因此,您只能在程序中动态注册此事件.由于我的应用程序在事件期间不会处于活动状态,因此我需要一个服务来处理此事件,我在onCreate中注册并在onDestroy中取消注册.到现在为止还挺好.我实现了服务并开始测试它,我发现在资源紧张的情况下系统会杀死服务,系统会自动重启服务.然而,令人惊讶的是,杀戮和重启之间的延迟,这是完全随机的,可能是巨大的.有时,它是几秒钟,有时是几个小时.因此,当广播事件发生时,您永远无法确定您的服务是否正在运行!

我浏览了stackoverflow,有各种各样的建议.有一个无效的虚拟线程,这将增加服务的"重要性",使用startForeground服务 - 这会导致通知.所有这些看起来像解决方法,而不是万无一失.

有没有办法以万无一失的方式解决这个问题?什么是处理"REGISTERED_ONLY"广播事件的替代解决方案?

谢谢.

service android restart broadcastreceiver

2
推荐指数
1
解决办法
689
查看次数

标签 统计

android ×1

broadcastreceiver ×1

restart ×1

service ×1