2

我想知道以下场景的最佳模式:

1)ActivityA包含一个按钮,按下时重置应用数据

2) IntentServiceAIntentServiceBActivityB希望收到有关该事件的通知。IntentServiceA清除应用程序的数据库,IntentServiceB从内部存储中删除一些文件ActivityB,尽管已停止,但从给定的内部删除任何未决消息Handler

这是我目前针对这种情况的设计:

1)ActivityA使用sendBroadcast()带有特定动作(比如 ACTION_RESET_DATA)的 a 来通知事件

2)有一个在方法上注册ActivityB的内部私有,因为即使活动停止,它也必须响应操作BrodcastReceiveronCreate()

3)IntentServiceA并且IntentServiceB也有BroadcastReceivers,但它们public static在 AndroidManifest.xml 中被声明为和声明。这样,无需在相应服务上进行任何注册即可访问它们。所有BroadcastReceiver要做的就是启动外部服务,它反过来检查onHandleIntent()方法上针对 ACTION_RESET_DATA 的意图操作

虽然它有效,但我可以看到这种方法存在两个主要问题:

  • 清单上声明了一个意图过滤器,其他应用程序无法访问。事实上,两者IntentService和内部BroadcastReceiver都声明为exported="false"
  • 我不能使用,因为它与AndroidManifest.xml 中声明的LocalBroadcastManager不兼容。BroadcastReceivers这将是可取的,因为有问题的广播在我的应用程序内部

我可以BroadcastReceiver从两者中删除并通过fromIntentServices手动启动它们并保持不变,但是如果服务数量增加怎么办?我必须包含代码才能启动所有这些?实际上,我的应用程序中还有其他一些类似的案例,我不确定如何正确处理它们。startServiceActivityAActivityB

有小费吗?

4

1 回答 1

0
于 2014-09-23T12:27:44.190 回答