我想知道以下场景的最佳模式:
1)ActivityA
包含一个按钮,按下时重置应用数据
2) IntentServiceA
,IntentServiceB
并ActivityB
希望收到有关该事件的通知。IntentServiceA
清除应用程序的数据库,IntentServiceB
从内部存储中删除一些文件ActivityB
,尽管已停止,但从给定的内部删除任何未决消息Handler
这是我目前针对这种情况的设计:
1)ActivityA
使用sendBroadcast()
带有特定动作(比如 ACTION_RESET_DATA)的 a 来通知事件
2)有一个在方法上注册ActivityB
的内部私有,因为即使活动停止,它也必须响应操作BrodcastReceiver
onCreate()
3)IntentServiceA
并且IntentServiceB
也有BroadcastReceivers
,但它们public static
在 AndroidManifest.xml 中被声明为和声明。这样,无需在相应服务上进行任何注册即可访问它们。所有BroadcastReceiver
要做的就是启动外部服务,它反过来检查onHandleIntent()
方法上针对 ACTION_RESET_DATA 的意图操作
虽然它有效,但我可以看到这种方法存在两个主要问题:
- 清单上声明了一个意图过滤器,其他应用程序无法访问。事实上,两者
IntentService
和内部BroadcastReceiver
都声明为exported="false"
- 我不能使用,因为它与AndroidManifest.xml 中声明的
LocalBroadcastManager
不兼容。BroadcastReceivers
这将是可取的,因为有问题的广播在我的应用程序内部
我可以BroadcastReceiver
从两者中删除并通过fromIntentServices
手动启动它们并保持不变,但是如果服务数量增加怎么办?我必须包含代码才能启动所有这些?实际上,我的应用程序中还有其他一些类似的案例,我不确定如何正确处理它们。startService
ActivityA
ActivityB
有小费吗?