我看到所有AlarmManager的例子都是由Activity设置的。
我的问题是: 如果我的应用程序设置了一个循环的AlarmManager,那么即使在启动的应用程序关闭并从内存中删除后,它是否仍然存在?
如果没有,我如何在启动时由Android启动的较低级别启动AlarmManager,如果它失败或死亡或重新启动异常,而用户不必做任何事情?
最后,如果我希望BroadcastReceiver进行的操作没有可视组件,我还是要为它创建一个单独的Activity吗?在我的情况下,我希望有一个后台上传器唤醒并查看一个文件夹,如果它看到该文件夹中的文件,将它们发送到服务器。我不需要向用户提供任何反馈。
所以,我的理想是拥有一个神奇的,基于操作系统的AlarmManager,它调用一个只处理上传的IntentService,但我不清楚如何让这个AlarmManager首先运行。
TIA
答案 0 :(得分:11)
是的,AFAIK警报“存活”并继续被触发,即使在注册它们的活动结束后也是如此。但他们无法在重启手机后继续存在。
如果我理解你的问题,我认为你可以通过创建一个广播接收器来监听android.intent.action.BOOT_COMPLETED意图,然后(重新)注册重复警报,从而实现你所寻找的目标。轮流启动(意图)服务进行上传。
您不需要活动,但无论如何您可能想要一个活动,让用户通过勾选复选框等临时禁用上传机制。让用户选择闹钟的频率,即启动服务的频率并查找要上传的新文件,这可能也会很不错。这也是第一次注册闹钟的好地方。
答案 1 :(得分:1)
我同意Nicolai的说法,你的应用程序中有2个广播接收器:
您仍然可以进行活动,但不应该由闹钟接收器启动(因此服务):相反,可能会在您启动服务时启动通知,用户可以从该服务启动活动扩展了通知的消息。
也许还要为你的闹钟考虑setInexactRepeating(而不是setRepeating),以及使用工作线程来处理长上传(如果用户想要同时在主线程中使用你的活动)。 / p>