AlarmManager return 数据到应用程序

AlarmManager return data to application

我正在尝试在我的应用程序中获得一项功能,即每晚打开一个 ftp 连接,将 ftp 服务器的内容与 sharedPreferences JSON 的内容进行比较如果有差异,请将缺失的数据上传到 ftp 服务器。

到目前为止,我认为我需要为此使用 AlarmManager,这样即使应用程序在晚上关闭时代码 运行s。
这对我来说是一个全新的东西,我正在查找一些文档和 Whosebug 相关问题,但我无法真正弄清楚这是否是我需要用于我正在尝试做的事情。

我发现以下 其中包含一个很好的 AlarmManager 示例。但是它也可以从 sharedPreferences 中检索数据吗?我也想知道我是否可以 运行 一个异步任务(使用协程)。

编辑:我读了一些关于工作经理的文章。对于我想要实现的目标,这会是更好的解决方案吗?

是的,您可以从 BroadcastReceiver 的共享首选项中获取数据。您还可以 运行 来自 BroadcastReceiver 的异步任务,例如协程或线程。

Workmanager 是从 Android 8 引入的。它比 AlarmManager 更好,因为它可以在您 phone 处于睡眠模式时管理打瞌睡模式等。您可以将 workmanager 配置为每 x 分钟执行一次有条件的工作(如果设备已连接,如果 phone 有 % 电池..) AlarmManager 最大的问题是您不必确定它会在特定时间启动,因为系统会优先管理所有警报...

更多详情:link