WorkManager是否应与SyncAdapter一起使用?

时间:2018-06-06 14:55:45

标签: android android-syncadapter android-workmanager

以前可以使用带有WakeLock的IntentService或SyncAdapter确保一系列更新。

现在使用新的打盹模式和节省电池的限制,WakeLock是否足够可靠,还是应该使用WorkManager在IntentService或SyncAdapter中启动更长的进程?

还是WorkManager api生产就绪吗?

2 个答案:

答案 0 :(得分:1)

据我了解,WorkManager可以完全替换IntentServiceSyncAdapter。例如。您在SyncAdapter.onPerformSync()中所做的一切现在都可以在WorkManager.doWork()中。

它仍处于alpha阶段(目前为1.0.0-alpha02):https://developer.android.com/topic/libraries/architecture/adding-components#workmanager

关于唤醒锁:在Android 8.0中有以下更改:

  

作为Android 8.0(API级别26)为改善电池续航时间而引入的一项更改,当您的应用进入缓存状态且没有活动组件时,系统会释放应用程序所拥有的任何唤醒锁。

所以我不再依赖唤醒锁了。我认为它们将在未来的Android版本中被完全删除。大多数情况下,您不需要使用WorkManager

答案 1 :(得分:1)

我不会使用JobScheduler或AlarmManager。 WorkManager位于其中,并为您处理所有内容,与您的应用运行的Android版本无关。

https://codelabs.developers.google.com/codelabs/android-workmanager 这是一个关于WorkManager的好例子,他们使用Worker进行图像处理,但是执行任何长时间运行的任务都非常好。 您可以在各种事物上指定约束,包括您希望设备空闲以运行工作程序。您还可以链接工作人员,将数据从一个传递到另一个,甚至将它们分组并运行一些并行,等待所有人完成,然后继续与另一个(或更多)工作人员。 根据您的使用情况,您基本上可以从任何地方(活动,广播接收器,stc)启动工作人员。

事实上,我使用从广播接收器开始的工作人员做一些api呼叫,只有当你有互联网连接时(可设置约束)并且它很容易设置并且工作得很好,我只能这样做建议使用(并祝福谷歌最终制作这些AC库)。 我也非常喜欢WorkManager将工作保存到具有空间的数据库这一事实,因此即使您在所有条件之间检出,它也可以在所有条件检出时进行检索。如果您有一些监控设置(例如stetho),您实际上可以看到它如何将作业保存到自己的数据库中。

它还处于阿尔法状态,但它的构造非常稳固,我认为它们在发布最终版本之前不会发生太大的变化。