Jetpack组件
文章平均质量分 79
任缥缈
天狼啸月的追逐
展开
-
ViewModel分析
该方法既执行了 mViewModelStores 的get()方法,也执行了 mViewModelStores 的put()方法。因此,mBagOfTags一定不为空,上面clear()方法的if(){...}判断会执行。因此,某个指定的 ViewModel所对应的key值“DEFAULT_KEY + ":" + canonicalName”,永远是不变的,相当于是final类型的。这两个 Factory 的子类,关键的都是 各自的create()方法,后面我还还会提到。原创 2024-01-15 11:28:51 · 399 阅读 · 0 评论 -
Android Jetpack 架构组件之 Navigation
一、关键字段的解释Kotlin语言环境下在Fragment里面操作控件的注意事项:在onCreateView()方法和onStart()方法里面直接通过id操作控件的话,会要求必须加findViewById()获取控件id,否则就会报"must not be null"这个错误。但是在onViewCreated()方法里面就不用这样。另外自定义的方法里面也是必须获取控件id。可以这么理解:在Fragment里面,除了在onViewCreated()方法里面直接操作控件或者调用操作控件的方法外,原创 2020-12-31 14:45:36 · 1420 阅读 · 0 评论 -
Android Jetpack 架构组件之 DataBinding进阶
一、简介Android Jetpack的数据绑定主要分为两种,一是单向绑定,二是双向绑定。单向绑定可以户这么理解:当我们的源数据发生变化的时候,与原数据绑定的UI也一并变化。双向绑定可以这么理解:当我们的源数据发生变化的时候,与原数据绑定的UI也一并变化;而当UI的数据变化的时候,我们的源数据 也跟着变化;比如我们的源数据 变化,与之绑定的TextView和EditTExt发生变化;当EditTExt输入框的的数据发生变化的时候,我们的元数据和TextView现实的数据也发生变化。二、单向绑定就是Je原创 2020-12-31 14:12:15 · 209 阅读 · 0 评论 -
Android Jetpack 架构组件之 DataBinding
一、DataBinding 简介:DataBinding ,顾名思义即为数据绑定,其推出目的就是为了减少繁琐的代码,使代码更加的简洁、可读性更强。使用 DataBinding 会让我们的布局文件不简简单单的只有一个布局文件的作用,还包含和很多的逻辑。可以大量减少 Java代码。同时DataBinding还会让我们的代码更有层级,结构更加的清晰完善,数据能够单向或者双向绑定到布局文件当中。这样有助于防止内存泄露,而且能够自动进行空检测以避免空指针异常。二、 DataBinding 的集成**DataB原创 2020-12-31 13:51:38 · 334 阅读 · 0 评论 -
Android Jetpack 架构组件之 WorkManger
一、前言对于后台任务,我们先回顾以前的做法:以前我们在处理后台任务时,一般都是使用Service(含IntentService)或者线程/线程池,而Service不受页面生命周期影响,可以常驻后台,很适合做一些定时、延时任务,或者其他一些肉眼不可见的神秘勾当。 在处理一些复杂需求时,比如监听网络环境自动暂停重启后台上传下载这类变态任务,我们需要用Service结合Broadcast一起来做,非常的麻烦,再加上传输进度的回调,让人想疯!同时大量的后台任务过度消耗了设备的电量,比如多种第三方推送的servi原创 2020-12-31 00:14:18 · 491 阅读 · 0 评论 -
Android Jetpack 架构组件之 Room
一、Room简介Room 持久性库在 SQLite 的基础上提供了一个抽象层,让用户能够在充分利用 SQLite 的强大功能的同时,获享更强健的数据库访问机制。该库可帮助您在运行应用的设备上创建应用数据的缓存。此缓存充当应用的单一可信来源,使用户能够在应用中查看关键信息的一致副本,无论用户是否具有互联网连接。二、依赖def room_version = "2.2.5"implementation "androidx.room:room-runtime:$room_version"// option原创 2020-12-30 23:22:06 · 355 阅读 · 0 评论 -
Android Jetpack 架构组件之 LiveData
一、LiveData简介LiveData是一个保存可以被观察的值的数据持有类。与普通的观察者不同,LiveData遵循应用组件的生命周期,比如Observer可以指定他应该观察的具体的Lifecycle。LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的应用组件观察者。如果观察者(由原创 2020-12-30 15:48:56 · 195 阅读 · 0 评论 -
Android Jetpack 架构组件之 ViewModel
一、ViewModel 介绍传统开发模式下,Activity、fragment 等任务繁琐,同时负责逻辑和UI,往往在一个比较大型的项目,一个 Activity 几千行代码算少的,让人看了就没下手的欲望,这也为啥衍生了 MVP、MVVM 的原因;而使用 ViewModel 的一个很重要的作用,就是可以为 Activity 分担一部分工作:专门存放界面相关的数据。也就是说,只要是界面上能看到的东西,它的变量都应该放在 ViewModel 中,而不是 Activity,这样就可以一定程序上减少 Activit原创 2020-12-30 13:58:19 · 277 阅读 · 0 评论 -
Android Jetpack 组件之 Lifecycle
一、Lifecycles简介Lifecycles是Jetpack当中的一个来解决生命周期管理问题的组件,通过监听生命周期的方式。如果我们的类不是Activity的话(广播\碎片另说),那么它是没有生命周期的。但在开发过程中,在MVP模式里,我们需要在P层里回调View的接口来更新UI,如果不对P层做生命周期处理,就很容易发生内存泄漏,为了让P层感知Activity的生命周期,通常会定义如下接口:interface IPresenter { fun onCreate() fun onSta原创 2020-12-30 10:04:49 · 340 阅读 · 0 评论