我有一个Android应用程序,它有一个定期的后台服务。我希望此服务有不同的反应,具体取决于我的应用程序中的任何活动是否已打开。问题是服务只是通过AlarmManager
使自己保持运行,使其与活动分开“跟踪”,所以我不知道应用程序在运行时是否打开。
我能想到的最好的解决方案是在我的所有活动中调用onResume()或onPause()时打开/关闭布尔值,但这似乎是很多步法。有更简单,更优雅的解决方案吗?
答案 0 :(得分:1)
是否更简单,更优雅 溶液
嗯,这取决于“不同反应”的含义。
如果您的活动不在前台,我们假设您想要引发Notification
,但如果某个活动位于前台,您想要弹出一个对话框。
在这种情况下,无论如何,您需要从服务到活动的一些通信路径。因此,使用onResume()
中的服务注册回调(由活动提供),并在onPause()
中取消注册。您的服务使用回调(如果存在);如果没有回调,则会引发Notification
。
如果您愿意,您可以使用广播Intent
(在onResume()
/ onPause()
中注册/取消注册接收者)来完成同样的事情。