我看到 AlarmManager 的所有示例都由 Activity 设置。
我的问题是: 如果我的应用程序设置了一个重复出现的 AlarmManager,它是否会在启动的应用程序关闭并从内存中删除后仍然存在?
如果不是,我如何在较低级别启动由 Android 在启动时启动的 AlarmManager,如果它失败或死机或抛出异常则无需用户执行任何操作即可重新启动?
最后,如果我希望 BroadcastReceiver 执行的操作没有可视组件,我是否还需要为它创建一个单独的 Activity?在我的例子中,我希望有一个后台 uploader 唤醒并查看一个文件夹,如果它看到该文件夹中的文件,则将它们发送到服务器。我不需要给用户任何反馈。
因此,我的理想是拥有一个神奇的、基于操作系统的 AlarmManager,它调用仅处理上传的 IntentService,但我不清楚如何首先运行这样的 AlarmManager。
TIA
最佳答案
是的,据我所知,即使在注册它们的 Activity 结束后,警报“仍然存在”并不断被触发。但它们无法在手机重启后存活下来。
如果我正确理解您的问题,我认为您可以通过创建一个带有广播接收器的项目来实现您的目标,该广播接收器监听 android.intent.action.BOOT_COMPLETED Intent ,然后(重新)注册一个重复警报,这依次启动一个 (Intent)Service 来进行上传。
您不需要 Activity ,但您可能无论如何都想要一个 Activity ,让用户通过勾选复选框或其他方式暂时禁用上传机制。让用户选择警报的频率也可能会很好,即应该多久启动一次服务并查找要上传的新文件。这也是第一次注册闹钟的好地方。
关于android - Android 中 AlarmManager 行为的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5072451/