【问题标题】:Android reschedule alarmmanager alarm when app is killed当应用程序被杀死时,Android会重新安排alarmmanager警报
【发布时间】:2015-01-25 19:00:22
【问题描述】:

我开发了一个应用来安排多个本地通知以提醒用户做某事。当年的每个月都应该发出通知。

这些本地通知是使用“AlarmManager”安排的。在“BroadcastReceiver”的 OnRetrieve 中创建并引发通知。

在应用程序(由用户)终止或设备重新启动之前一切正常。

经过一番研究,我找到了在设备重新启动时重新安排警报/本地通知的解决方案 => 使用带有“ActionBootCompleted”作为意图过滤器的 BroadcastReceiver,然后在“OnReceive”中重新安排通知。

很遗憾,如果应用程序终止,我找不到合适的解决方案来重新安排警报/本地通知。

这种情况下最好的方法是什么?

【问题讨论】:

    标签: android xamarin broadcastreceiver alarmmanager


    【解决方案1】:

    尝试将其作为后台服务运行。当用户第一次打开应用程序时,调用服务 OnCreate()。确保服务是 START_STICKY ,因此除非您明确告诉它,否则它无法停止。然后将您的 AlarmManagers 放在服务中。

    【讨论】:

    • 其实当用户关闭应用时服务会被终止,但由于服务有粘性,它会自动重启。这种方法的缺点是它会消耗资源,因为服务在设备上运行。
    • 是的,服务重启了,如果你想消耗资源,你可以使用一个计时器,它会在一定的时间后(每小时、每天等)检查日期
    • @Ethan,是否希望始终有一个正在运行的服务?我可以想象这只是为了安排一些本地推送通知有点矫枉过正。它不断消耗 +/- 30mb RAM
    • 这是在您的应用被销毁后安排推送通知的唯一方法。否则,您的应用程序必须一直打开才能检测时间并安排它们。如果您不想让服务一直运行,那么也许您可以从另一个服务启动和停止服务,它只包含一个简单的计时器来启动和停止第一个服务。我以前从未这样做过,老实说,这样做似乎有点多余,但我看不到任何其他方式。
    • 如果提供代码,我们中的一些人会很清楚
    猜你喜欢
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多