如何判断应用程序中的任何活动是否具有前瞻性?

时间:2010-03-11 01:31:53

标签: android service

我有一个Android应用程序,它有一个定期的后台服务。我希望此服务有不同的反应,具体取决于我的应用程序中的任何活动是否已打开。问题是服务只是通过AlarmManager使自己保持运行,使其与活动分开“跟踪”,所以我不知道应用程序在运行时是否打开。

我能想到的最好的解决方案是在我的所有活动中调用onResume()或onPause()时打开/关闭布尔值,但这似乎是很多步法。有更简单,更优雅的解决方案吗?

1 个答案:

答案 0 :(得分:1)

  

是否更简单,更优雅   溶液

嗯,这取决于“不同反应”的含义。

如果您的活动不在前台,我们假设您想要引发Notification,但如果某个活动位于前台,您想要弹出一个对话框。

在这种情况下,无论如何,您需要从服务到活动的一些通信路径。因此,使用onResume()中的服务注册回调(由活动提供),并在onPause()中取消注册。您的服务使用回调(如果存在);如果没有回调,则会引发Notification

如果您愿意,您可以使用广播Intent(在onResume() / onPause()中注册/取消注册接收者)来完成同样的事情。