1.ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。注意:可以在 Fragment 之间共享数据
https://developer.android.com/topic/libraries/architecture/viewmodel
2.WorkManager
WorkManager 可处理三种类型的永久性工作:
- 立即执行:必须立即开始且很快就完成的任务,可以加急。
- 长时间运行:运行时间可能较长(有可能超过 10 分钟)的任务。
- 可延期执行:延期开始并且可以定期运行的预定任务。
立即 | 一次性 | OneTimeWorkRequest 和 Worker 。 如需处理加急工作,请对 OneTimeWorkRequest 调用 |
长期运行 | 一次性或定期 | 任意 WorkRequest 或 Worker 。在工作器中调用 setForeground() 来处理通知。 |
可延期 | 一次性或定期 | PeriodicWorkRequest 和 Worker 。 |
介绍视频:https://www.youtube.com/playlist?list=PLWz5rJ2EKKc_J88-h0PhCO_aV0HIAs9Qk
WorkManager 提供了四种不同类型的工作基元:
- Worker 是最简单的实现,我们已在前面几节进行了介绍。WorkManager 会在后台线程中自动运行该基元(您可以将它替换掉)。请参阅工作器中的线程处理,详细了解
Worker
实例中的线程处理。 - CoroutineWorker 是为 Kotlin 用户建议的实现。
CoroutineWorker
实例公开了后台工作的一个挂起函数。默认情况下,这些实例运行默认的Dispatcher
,但您可以进行自定义。请参阅 CoroutineWorker 中的线程处理,详细了解CoroutineWorker
实例中的线程处理。 - RxWorker 是为 RxJava 用户建议的实现。如果您有很多现有异步代码是用 RxJava 建模的,则应使用 RxWorker。与所有 RxJava 概念一样,您可以自由选择所需的线程处理策略。请参阅 RxWorker 中的线程处理,详细了解
RxWorker
实例中的线程处理。 - ListenableWorker 是
Worker
、CoroutineWorker
和RxWorker
的基类。这个类专为需要与基于回调的异步 API(例如FusedLocationProviderClient
)进行交互并且不使用 RxJava 的 Java 开发者而设计。请参阅 ListenableWorker 中的线程处理,详细了解ListenableWorker
实例中的线程处理。
检测任务方式相关资料:
https://developer.android.com/studio/inspect/task
3.liveData
LiveData 是一种可观察的数据存储器类
网络请求的例子
class MyViewModel extends ViewModel { private final PostalCodeRepository repository; private final MutableLiveData<String> addressInput = new MutableLiveData(); public final LiveData<String> postalCode = Transformations.switchMap(addressInput, (address) -> { return repository.getPostCode(address); }); public MyViewModel(PostalCodeRepository repository) { this.repository = repository } private void setInput(String address) { addressInput.setValue(address); } }
4.Room
room相关学习和参考链接
kotlin 版本:https://developer.android.com/codelabs/android-room-with-a-view-kotlin#0
java 版本: https://developer.android.com/codelabs/android-room-with-a-view?index=..%2F..index#0
官网:https://developer.android.com/training/data-storage/room