Android 同时向活动和服务通知事件的模式
我想知道以下场景的最佳模式: 1)Android 同时向活动和服务通知事件的模式,android,service,android-activity,broadcastreceiver,intentservice,Android,Service,Android Activity,Broadcastreceiver,Intentservice,我想知道以下场景的最佳模式: 1) ActivityA包含一个按钮,按下该按钮可重置应用程序数据 2) IntentServiceA、IntentServiceB和ActivityB希望收到有关事件的通知IntentService a清除应用程序的数据库,IntentService B从内部存储器中删除一些文件,ActivityB,尽管已停止,但从给定的内部处理程序中删除任何挂起的消息 以下是我目前针对这种情况的设计: 1) ActivityA使用带有特定操作(如操作重置数据)的sendBroa
ActivityA
包含一个按钮,按下该按钮可重置应用程序数据
2) IntentServiceA
、IntentServiceB
和ActivityB
希望收到有关事件的通知IntentService a
清除应用程序的数据库,IntentService B
从内部存储器中删除一些文件,ActivityB
,尽管已停止,但从给定的内部处理程序中删除任何挂起的消息
以下是我目前针对这种情况的设计:
1) ActivityA
使用带有特定操作(如操作重置数据)的sendBroadcast()
来通知事件
2) ActivityB
有一个内部私有的brodcastereceiver
,它注册在onCreate()
方法上,因为即使活动停止,它也必须响应操作
3) IntentServiceA
和IntentServiceB
也有广播接收器
,但它们被声明为公共静态
,并在AndroidManifest.xml中声明。这样,就可以访问它们,而无需在相应的服务上进行任何注册。所有的BroadcastReceiver
do都是启动外部服务,该服务依次检查intent的操作与onHandleIntent()
方法上的操作重置数据
虽然它可以工作,但我可以看到这种方法存在两个主要问题:
- 清单上声明了其他应用程序无法访问的意图筛选器。事实上,
和内部IntentService
都是用BroadcastReceiver
exported=“false”
- 我无法使用
,因为它与AndroidManifest.xml中声明的LocalBroadcastManager
不兼容。这将是可取的,因为有问题的广播是我的应用程序内部的BroadcastReceivers
IntentServices
中删除BroadcastReceiver
,然后通过ActivityA
中的startService
手动启动它们,并保持ActivityB
不变,但如果服务数量增加怎么办?我必须包含代码才能启动它们?事实上,我的应用程序中还有一些类似的案例,我不确定如何正确处理它们
有什么建议吗?试试共享参考资料。当价值发生变化时,将通知活动
你有没有一个例子来说明如何使用它?我的意思是在文章的正文中。只有链接的答案不受欢迎,因为当链接过期/死亡/移动时,anser将丢失所有值。为了防止这种情况发生,并确保您提供高质量的答案,请在答案正文中包含示例、详细信息和其他相关信息。