我想知道以下场景的最佳模式:
1)ActivityA
包含一个按钮,可在按下时重置应用数据
2)IntentServiceA
,IntentServiceB
和ActivityB
希望收到有关该事件的通知。 IntentServiceA
清除了应用的数据库,IntentServiceB
从内部存储中移除了一些文件,ActivityB
虽然已停止,但却删除了来自指定内部Handler
的所有待处理邮件
以下是我目前的情况设计:
1)ActivityA
使用具有特定操作的sendBroadcast()
(比如ACTION_RESET_DATA)来通知事件
2)ActivityB
有一个内部私有BrodcastReceiver
,它在onCreate()
方法上注册,因为即使活动停止,它也必须响应操作
3)IntentServiceA
和IntentServiceB
也有BroadcastReceivers
,但它们被声明为public static
并在AndroidManifest.xml中声明。这样,无需在相应服务上进行任何注册即可访问它们。所有BroadcastReceiver
做的都是启动外部服务,然后在onHandleIntent()
方法上检查意图对ACTION_RESET_DATA的操作
虽然它有效,但我可以通过这种方法看到两个主要问题:
IntentService
和内部BroadcastReceiver
都声明为exported="false"
LocalBroadcastManager
,因为它与AndroidManifest.xml中声明的BroadcastReceivers
不兼容。这是可取的,因为有问题的广播是我的应用内部的我可以从BroadcastReceiver
移除IntentServices
并从startService
通过ActivityA
手动启动它们,并保持ActivityB
不变,但如果数字是多少服务增加?我必须包含代码才能启动所有这些代码?实际上,我在我的应用程序中还有其他一些像这样的情况,我不确定如何正确处理它们。
任何提示?
答案 0 :(得分:0)
尝试sharedPreferences。当价值发生变化时,将通知活动。