在我的android应用程序中,我需要每隔5天执行一项任务。任务是调用API并从服务器获取数据,即使应用程序没有运行/终止。
我已核对了以下可能的选择:
Alarm manager + Broadcast receiver + Intentservice --在这种方法中,问题在于安卓框架对intentService施加的限制。此外,如果设备被重新启动,注册的警报将被擦除。WorkManager --对于我的任务来说,这似乎是一种更好的方法,可以保证在最新的安卓版本上执行,但仍然不清楚是使用PeriodicWorkRequest还是OneTimeWorkRequest并继续重新安排它。请注意,在确切的时钟时间内执行此任务并不重要,但每隔5天执行一次就可以了。
发布于 2021-05-07 12:48:12
第一个选择是更好的方法。
警报管理器+广播接收器+ Servcie:在这里,您需要通过通知使服务成为前台服务。即使应用程序被终止或没有运行,您的服务也将始终运行。对于重新启动,您可以有一个重新启动接收器,并再次设置警报。使用这种方法,服务可以运行,其中需要大量时间,比如下载多个文件,因为它可以运行到作业完全完成为止。
WorkManager :对于WorkManager,主要的问题是,在所有移动制造商中,这种行为并不一致。像三星这样的手机制造商对电池优化有限制,当应用程序没有运行或终止时,WorkManager就无法工作。在需要大量时间(例如下载多个文件)的情况下,WorkManager是不好的,因为它会在10分钟后终止(如果我没有错)
Work Manager not working when app is killed by the user. Why?
https://stackoverflow.com/questions/67434137
复制相似问题