源码篇 - 广播接收者

此篇将重点介绍WorkManager使用的重要组件:广播接收者,主要涉及意外停止监听广播ForceStopRunnable.BroadcastReceiver、约束状态监听广播ConstraintProxy.*、启动重新规划服务的广播RescheduleReceiver、代理约束更新广播ConstraintProxyUpdateReceiver、测试诊断广播DiagnosticsReceiver。此类组件为WorkManager稳定运行、重新规划、约束更新提供了支持。

2021年02月15日 Jetpack
阅读更多...

目录


源码篇

上一篇中我们简单使用了WorkManager的一般功能,基础使用还是比较简单的。“WorkManager 是一个 API,可供您轻松调度那些即使在退出应用或重启设备后仍应运行的可延期异步任务”。那么我们来了解一下他到底是怎么工作的吧。

2021年02月06日 Jetpack
阅读更多...

目录


ZERO

Q: 什么是WorkManager?为什么要使用它?

WorkManager 是一个 API,可供您轻松调度那些即使在退出应用或重启设备后仍应运行的可延期异步任务。WorkManager API 是一个适合用来替换先前的 Android 后台调度 API(包括 FirebaseJobDispatcher、GcmNetworkManager 和 JobScheduler)的组件,我们也建议您这样做。WorkManager 在其现代、一致的 API 中整合了其前身的功能,该 API 支持 API 级别 14,在开发时即考虑到了对电池续航的影响。

Q: 一定要使用WorkManager吗?

如果您的应用以 Android 10(API 级别 29)或更高版本为目标平台,那么您对 FirebaseJobDispatcher 和 GcmNetworkManager API 的调用在搭载 Android Marshmallow (6.0) 及更高版本的设备上将无法正常工作。

由上一问题可知,WorkManager是对 FirebaseJobDispatcher 和 GcmNetworkManager API 的替换,在一定情境下,显然更推荐您使用WorkManager。


本章主要内容为WorkManager基本使用及源码分析,涉及WorkManager入门使用、源码分析两个部分,可根据个人需要选择部分内容阅读。

本章所述WorkManager相关内容均基于WorkManager:2.4.0;

本章涉及代码内容均使用Java语言编写,Java版本1.8;

本章演示项目地址:https://github.com/TinloneX

参考官方文档请点击这里

2021年02月06日 Jetpack
阅读更多...

目录


源码篇

前面从work-runtime库的AndroidManifest.xml中了解到,WorkManager工作主要通过ContentProvider、Service、BroadcastReceiver协同工作,而关注几个主要Service工作流程发现,最终都会执行到Processor.startWork()方法,此篇将重点关注Processor.startWork()是何方神圣。

2021年02月06日 Jetpack
阅读更多...

目录


源码篇

上一篇中我们简单使用了WorkManager的一般功能,基础使用还是比较简单的。“WorkManager 是一个 API,可供您轻松调度那些即使在退出应用或重启设备后仍应运行的可延期异步任务”。那么我们来了解一下他到底是怎么工作的吧。

SystemJobService

Service invoked by {@link android.app.job.JobScheduler} to run work tasks.

服务将被JobScheduler调用来执行工作任务。
从描述可得SystemJobServiceSystemAlarmService职责是一致的,都是“run work tasks”。

2021年02月06日 Jetpack
阅读更多...

目录


源码篇

上一篇中我们了解了WorkManager使用的的主要组件,猜测了各个组件的作用,并简单介绍了WorkManager是如何初始化的。本篇将延续前文,介绍WorkManager中Service组件之一的SystemAlarmService。

SystemAlarmService

Service invoked by {@link android.app.AlarmManager} to run work tasks.

服务将被AlarmManager调用来执行工作任务.

2021年02月06日 Jetpack
阅读更多...

目录


源码篇

上一篇中我们了解了WorkManager使用的的主要组件,猜测了各个组件的作用,并简单介绍了WorkManager是如何初始化的。本篇将延续前文,介绍WorkManager中Service组件之一的SystemForegroundService。

SystemForegroundService

在看过前面SystemAlarmService & SystenJobService 后,我本以为
SystemForegroundService也如前者一般是处理任务执行的,但简单阅读代码后发现并非如此,尽管结构上与前者类似,但其主要作用是给运行任务的服务提权,保证其在前台执行

2021年02月06日 Jetpack
阅读更多...