2021年03月10日 Jetpack
阅读更多...

ViewModel这个名称常常使人误解为MVVM中的ViewModel层,那么它是不是同一个东西呢?

ViewModel可以作为MVVM中的ViewModel层,但不是特指MVVM中的ViewModel层。

ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。

它是一个独立的组件,你可以把它视作生命周期相关的数据存储工具, 把它用在你觉得合适的任意地方,它可以是Fragment共享数据的桥梁、可以是屏幕方向切换时的数据来源、当然也可以是 MVVM 中 ViewModel层的 数据提供者,你可以使用LiveData让它变成可观察的数据,也可以使用DataBinding让他成为View的数据源

【本系列文章(JAVA/KOTLIN)演示案例均存储在github存储库ArchitecturalComponentExample中】

本篇所述源码及代码基于 API 30

2021年03月07日 Jetpack
阅读更多...

上一篇文章中我们讲了Jetpack之生命周期感知组件-Lifecycle使用篇,接下来我们来看一下他是如何工作的吧。

在了解其工作原理前,我们需要先简单了解以下ActivityThread对Activity生命周期的分发流程,以便理解Lifecycle的工作原理。

此篇前半部分将讲述API26及API30生命周期分发流程,后半部分依照前半部分对照讲述Lifecycle生命周期分发时机,最后将介绍Lifecycle源码执行流程及ProcessLifecycleOwner是如何实现应用前后台监听的。

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

前言

什么是生命周期感知组件?

生命周期感知型组件可执行操作来响应另一个组件(如 Activity 和 Fragment)的生命周期状态的变化。这些组件有助于您写出更有条理且往往更精简的代码,这样的代码更易于维护。

Lifecycle是什么?

Lifecycle 是一个类,用于存储有关组件(如 Activity 或 Fragment)的生命周期状态的信息,并允许其他对象观察此状态。

它所解决的痛点问题是什么?

在 Android 框架中定义的大多数应用组件都存在生命周期。生命周期由操作系统或进程中运行的框架代码管理。它们是 Android 工作原理的核心,应用必须遵循它们。如果不这样做,可能会引发内存泄漏甚至应用崩溃。

【本系列文章(JAVA/KOTLIN)演示案例均存储在github存储库ArchitecturalComponentExample中】

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

前言

应用程序启动库StartUp提供了一种在应用程序启动时初始化组件的简单、高效的方法。库开发者和应用开发者都可以使用app Startup来简化启动序列,并显式设置初始化顺序。

不同于为每个需要初始化的组件定义单独的内容提供程序,App Startup允许你定义共享单个内容提供程序的组件初始化程序。这可以显著提高应用程序的启动时间。

此组件主要解决的痛点问题是:简化各个外部引用SDK初始化操作,并优化SDK初始化时机,在确保启动速度的情况下以更优更稳定的方式按需初始化SDK(当然,也可以利用它的按需按序执行的功能来初始化某些类)。

【本系列文章演示案例均存储在github存储库ArchitecturalComponentExample中】

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

源码篇 - 广播接收者

此篇将重点介绍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
阅读更多...