Android应用程序是否在后台运行?

时间:2012-03-05 08:14:37

标签: android android-intent

如何知道应用程序(非活动)是否在后台运行???

我正在开发一个警报应用程序。有三个活动A,B,C。 A是主要的应用程序屏幕。用户从A移动B.当B到达前台时,警报被注册。 B完成后,警报将被删除。当接收器从AlarmManager接收到通知时,它会调用活动C.在C用户可以打盹停止警报。

我的问题是当我的应用程序转到后台时,它不应该响起警报。我想删除已注册的闹钟。我无法覆盖B的onPause以删除已注册的警报,因为当接收器收到来自警报管理器的通知时,它会调用C到前台并且B移动到后台。如果我在B的​​onPause中取消注册警报,它将不会在这种情况下响铃。

如何知道应用程序在后台运行(没有任何活动在前台),然后阻止调用C。

提前致谢

2 个答案:

答案 0 :(得分:0)

当您运行应用程序时,其状态将在ActivityManager.RunningAppProcessInfo中可用。此类包含当前在系统中运行的进程。进程名称只是应用程序的包名称。有关详细信息,请参阅this answer

答案 1 :(得分:0)

你应该在活动B的onStop方法中取消注册警报,当你的活动B被销毁时它将被调用,或者当活动B被销毁时你可以在活动B的onDestroy上取消注册警报。