2014-10-20 95 views
2

我使用警报管理器设置挂起的意图,所以我的代码获取即使应用程序被关闭Android的报警管理器时,应用程序被关闭

manager.setRepeating(AlarmManager.RTC, System.currentTimeMillis() + interval, interval, pendingIntent); 
执行挂起的意图

的问题是,它也可以当应用程序是打开,我需要将其配置为仅在应用程序关闭时才起作用。有没有办法通过报警管理器或活动进行配置?

+0

哪个BroadcastReceiver是你使用清单还是手动代码? – MOSO 2014-10-20 07:34:59

+1

当应用程序关闭时,闹钟管理器不起作用。你需要使用STICKY SERVICE为此将在后台运行... – Riad 2014-10-20 07:37:00

+0

为此创建后台服务,并检查您的活动是否在前面比不执行您的代码.. – 2014-10-20 07:49:13

回答

1

警报在您的应用程序范围之外运行,因此如果不再需要它们,您需要手动取消它们。您可以使用cancel()方法AlarmManager来完成此操作。 不幸的是,我不认为有一个简单的方法来了解您的应用程序是否正在关闭。在途中可以使用ActivityLifecycleCallbacks。检查this answer了解更多信息。正如你可以在那里看到

只要检查停止活动的数量是否等于已开始活动的数量 。如果它们相同,则应用程序正在 后台接地

此时您可以设置闹钟。 相反

如果有更多的启动活动,您的应用程序仍然是 可见。如果有比暂停活动更恢复,你的应用程序 不仅是可见的,但它也是在前台

时,在这种情况下,你可以使用AlarmManagercancel()方法。 请注意,只要设备重新启动,所有警报都会取消。

+0

以及说马维。实际上,当机器重新启动时,与应用程序对齐的后台服务会停止,直到它再次启动。 @Edgar:“为了避免在应用程序打开时运行后台活动” - 检查应用程序is_running在服务上,然后在任务运行时不执行任务。 – Riad 2014-10-20 09:14:03

相关问题