Bis*_*ash -1 service android scheduling handler alarmmanager
我有两种类型的主屏幕应用程序小部件 1. 由文本视图组成,2. 由列表视图组成。第一个显示来自阵列的数据,第二个从服务器提取信息(即涉及网络操作)。而且它们都需要每分钟更新一次。现在,对于每种情况,以下哪种技术最好?
a) Handler
b) Alarm Manager
c) JobScheduler
d) Firebase JobDispatcher
e) SyncAdapter
f) ..anything else if there is...
Run Code Online (Sandbox Code Playgroud)
作为 Android 初学者,很难决定哪种技术最适合设备的电池寿命。我在这里先向您的帮助表示感谢。
作为 Android 初学者,很难决定哪种技术最适合设备的电池寿命
答案是“以上都不是——不要尝试每分钟更新一次应用程序小部件”。谷歌会竭尽全力阻止你做这种事情,因为用户厌倦了应用程序开发人员浪费电池寿命。
处理程序
Handler与你想要解决的问题关系不大。您可以使用Handler和postDelayed()来实现进程内计时循环,但您也可以使用经典的 Java 解决方案,例如ScheduledExecutorService.
然而:
这要求您有一个进程始终运行。从 Android O 开始,这又要求您拥有前台服务,这意味着您必须显示Notification. 用户对此以及似乎无缘无故地持续消耗系统 RAM 的应用程序感到恼火。而且,在实践中,无论如何你都不可能让一个进程一直运行,尽管使用粘性前台服务,你可以接近这一点。
当设备在 Android 6.0+ 上处于打瞌睡模式时,这不会更新应用程序小部件。
当设备处于睡眠状态时,这不会更新应用程序小部件。
报警管理器
AlarmManager将使您不必一直有一个正在运行的进程。但是,当设备在 Android 6.0+ 上处于打瞌睡模式时,这不会更新应用程序小部件。
JobScheduler
JobScheduler作业不精确(即,您无法准确控制它们何时运行),并且我不知道它们是否可以像每分钟一次一样频繁地调用。此外,当设备在 Android 6.0+ 上处于打瞌睡模式时,这不会更新应用程序小部件;当设备在 Android 7.0+ 上处于部分打瞌睡模式时,它也不会更新应用程序小部件。
Firebase 作业调度程序
这要求您拥有一台服务器来管理注册并每分钟发送高优先级 FCM 消息。我的猜测是谷歌最终会阻止服务器这样做。
同步适配器
您无法准确控制同步发生的时间。此外,当设备在 Android 6.0+ 上处于打瞌睡模式时,这不会更新应用程序小部件;当设备在 Android 7.0+ 上处于部分打瞌睡模式时,它也不会更新应用程序小部件。
| 归档时间: |
|
| 查看次数: |
961 次 |
| 最近记录: |