You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
一上来看说明:This class was deprecated in API level 30.
IntentService is subject to all the background execution limits imposed with Android 8.0 (API level 26). Consider using WorkManager instead.
已经不建议使用了
public class UploadWorker extends Worker {
public UploadWorker(
@NonNull Context context,
@NonNull WorkerParameters params) {
super(context, params);
}
@Override
public Result doWork() {
// Do the work here--in this case, upload the images.
uploadImages();
// Indicate whether the work finished successfully with the Result
return Result.success();
}
}
Service的局限性
IntentService已经过时
一上来看说明:This class was deprecated in API level 30.
IntentService is subject to all the background execution limits imposed with Android 8.0 (API level 26). Consider using WorkManager instead.
已经不建议使用了
Service可能会被系统回收
这是一个小麻烦,如果系统资源不足或者Activity不在活动状态,Service有可能被干掉可能。一个是没有安全感,第二个感觉一个永不停止的Service似乎也不是设计Service的“本意”。周期性的任务似乎应该有更好的解决方案
绑定的服务和前台服务暂时安全
经过测试绑定服务和前台服务“不容易”被系统回收,应该可以放心使用
但是有限制
WorkManager 简介
好在WorkManager填补了部分需求空白
可以看出来WorkManager的底层实现在不同API有不同的实现。不过作为“抽象层”,我们可以选择不关心
还是用图解释比较清楚
一次性任务
就是随时发起的临时一次性任务
长时间任务
需要运行超过10分钟的任务,比如下载超大文件等
定期任务
如定期同步数据,时间同步等等
简单实现
最最简单基础的Work
doWork方法只能写同步执行
最简单也最没啥用。如果真的是非常简单的执行问为啥兴师动众单独写出来,这不是悖论嘛
这里是最基本的一次性任务
到这里我们要写流程就结束了,后面交给“系统”自己去执行了
总结预告
初次了解WorkManager上手还算比较简单,体系也比较全,算是Service的补充,只是现在这些功能还不足以满足“高级”的需求,
我在后面的章节里面补充
参考链接
The text was updated successfully, but these errors were encountered: