Jetpack中各个组件简介


前言

Jetpack是当下最火的组件了,Google官方大力推荐,其好用,性能优异受到很多开发者的喜爱,接下来我们将简单了解一下Jetpack中各个组件,以后会发文章单独详细讲解


一、Lifecycle

lifecycle通过观察者模式监听生命周期

被观察者(lifecycleOwner):activity,Fragment声明周期变化getLifecycle().addObversever(自己的类)绑定观察者—>通知 dispatch(Event)—>观察者(lifecycleObserver):用户类,FrameWork层类,mObserverMap:存放了所有观察者—>反射拿到观察者的class对象—>mInfo:存放了所有带注解的方法@OnLifecycleEvent(Lifecycle.Event.ON_CREATE))—> mMethod.invoke(target,source)—>调用相应api,需要监听哪个声明周期则重写哪个方法就好

  • mState:从左往右,从右往左返回状态值
  • 监听生命周期需要实现lifecycleObserver接口

二、liveData

  • liveData是一个数据持有类

  • 能够感知组件的生命周期,确保仅更新活跃组件

  • 不会因Activity停止而导致崩溃,如果观察者的生命周期处于非活跃状态(如返回栈中的 Activity),则它不会接收任何 LiveData 事件

  • 持有的数据可被观察者观察,在底层数据更改时通知视图

  • 一对多观察者:观察者会绑定lifecycle对象,在生命周期结束时会自我清理(不会发生内存泄露)

  • 共享资源:可以使用单例模式扩展 LiveData 对象以封装系统服务,以便在应用中共享它们。

  • liveData使用:

    • MutableLiveData:LiveData(抽象类)的子类

    • liveData.postValue():可在任意线程下执行(切换线程操作)

    • liveData.setValue():只能在主线程中执行

    • liveData.observe():注册观察者

  • observe()源码:注册观察者保存在mObserves(map)中

    感知生命周期:owner.getLifecycle().addObserver(wapper),改变时调用onstatechanged()

    观察者有两种情况会被回调:

    1、postValue时会遍历观察者然后回调

    2、当组件生命周期发生变化或者第一次注册观察者时回调

  • 粘性事件:

    这里得满足两个条件会触发粘性事件
    1.数据发送早于注册监听
    2.监听者的owner生命周期进入活跃状态


三、ViewModel和DataBinding

  • viewModel:注重以生命周期的方式存储和管理界面相关数据,不受activity生命周期影响

    • 数据持久化:生命周期不受限制

    • 异步回调问题不会造成内存泄露

    • 隔离model层和view层:解耦

    • Fragment间共享数据

  • DataBinding:实现双向绑定,数据和UI同步

    作用:当数据源发生改变时,及时更新给UI(p层做的事情交给系统源码去做)


四、Navigation和Fragment

  • Navigation:导航(回退栈)

  • 三大件:

    • Navigation Graph:导航图,包含了所有导航相关信息的XML资源。一般防止在res/navigation目录下

    • NavHost:容器,用来显示Fragment的,即Activity中的fragment,要求实现NavHost

    • NavController:在NavHost中管理应用导航的对象

    一句话就是,通过NavController,获取当行图中的特定路径以及目标,导航到特定的目标放到NavHost中

    Navigation是用来管理Fragment的切换,并且可以通过可视化的方式,看见APP的交互流程。

  • 优势:

    1、可视化的页面导航图,可以编辑各个组件之间的跳转关系
    2、优雅的支持Fragment之间的转场动画
    3、通过第三方的插件(SafeArgs(Gradle插件))支持Fragment之间类型安全的参数传递
    4、通过NavigationUI类,对菜单,底部导航,抽屉菜单导航进行方便统一的管理
    5、支持通过deeplink直接定位到Fragment


五、Room数据库

  • 轻量级orm数据库(关系映射型),本质上sqlite抽象层,类似于Retrofit库,Room在开发阶段通过注解标记相关功能,编译时自动生成impl实现类

  • 数据库框架的两种实现思路:

    • 关系映射型(orm):根据类对象通过反射的手段获取到类名以及成员变量名作为表名和字段名

      缺点:无法确定类对象中有哪些成员不需要创建表字段

    • 注解+反射:每个业务模块完全独立,不浪费资源,要自定义注解和处理注解

  • Room三大件:

    1、Entity:实体类,对应的是数据库的一张表结构。需要使用注解 @Entity 标记。
    2、Dao:包含访问一系列访问数据库的方法。需要使用注解 @Dao 标记。
    3、Database:数据库持有者,作为与应用持久化相关数据的底层连接的主要接入点。需要使用注解 @Database 标记。
    使用@Database注解需满足以下条件:
    1)定义的类必须是一个继承于RoomDatabase的抽象类。
    2)在注解中需要定义与数据库相关联的实体类列表。
    3)包含一个没有参数的抽象方法并且返回一个带有注解的 @Dao。


六、workManager

  • workManager:可延迟运行,并在应用退出或重启时能可靠运行任务

    应用场景:埋点上传,非即时性上传与下载,同步数据和处理数据

  • 三大件:

    1、Worker:我们要执行的具体任务。需要继承Worker,重写doWork方法,然后在里面写具体的逻辑。
    2、WorkRequest:上面的Worker是定义了我们要在后台的任务,而这个类是对Worker的包装。
    下面两个都是继承了WorkRequest:
    OneTimeWorkRequest: 只执行一次的任务
    PeriodicWorkRequest: 重复执行的任务(重复间隔大于15分钟)
    3、WorkManager:是对WorkRequest的管理类。


七、pager

  • pager:分页加载

  • 三大件:

    • DataSource:数据源,获取数据

    • pagedList:承载数据,可理解为一页数据的集合

    • pagedListAdapter:对RecyclerViewAdapter的一个扩展

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Jetpack架构组件从入门到精通》.pdf 是一本介绍Android Jetpack架构组件的书籍。Jetpack是Google官方提供的一套组件库,旨在帮助开发者更轻松地构建高质量的Android应用程序。 这本书从入门到精通地介绍了Jetpack架构组件的各个方面。首先,它详细解释了Jetpack的基本概念和使用方法。读者可以学习到Jetpack的核心组件,如ViewModel、LiveData、Room和Navigation等,以及它们在构建Android应用时的作用。 此外,这本书还介绍了Jetpack架构组件的一些高级技术和最佳实践。读者可以学习到如何使用WorkManager实现后台任务,如何使用DataBinding进行数据绑定,以及如何使用Paging构建分页列表等。 除了介绍Jetpack架构组件的基本用法和高级技术,这本书还提供了一些实际应用示例和案例分析。读者可以通过参考这些示例来更好地理解和应用Jetpack架构组件。 总之,《Jetpack架构组件从入门到精通》.pdf 是一本全面而深入地介绍Jetpack架构组件的书籍。无论是初学者还是有一定经验的开发者,都可以通过阅读这本书来提升自己在Android应用开发使用Jetpack的能力。 ### 回答2: 《Jetpack架构组件从入门到精通》.pdf 是一本关于Jetpack架构组件的学习指南。Jetpack是Android开发一套强大而且灵活的组件集合,旨在帮助开发者更轻松地构建高质量的Android应用程序。 该PDF文件从入门到精通地介绍了Jetpack架构组件的各个方面。首先,它向读者介绍了Jetpack的概念和使用场景,以帮助读者了解为什么应该学习和使用这些组件。 接下来,该指南逐一介绍了Jetpack架构组件的不同模块,包括ViewModel、LiveData、Room、Navigation等。它详细解释了每个组件的功能和用法,并通过实际示例演示了如何在项目使用它们。 此外,该指南还提供了一些常见的最佳实践和实用技巧,以帮助读者更好地理解和运用Jetpack架构组件。它还包含了一些常见问题和解决方案,帮助读者避免在实践遇到的常见问题。 最后,该指南还提供了一些参考资料和进一步学习资源,以帮助读者深入学习和掌握Jetpack架构组件。 总的来说,该《Jetpack架构组件从入门到精通》.pdf提供了一个全面而详尽的学习指南,帮助读者了解和应用Jetpack架构组件,使他们能够更高效地构建高质量的Android应用程序。无论是初学者还是有经验的开发者,该指南都是一个值得阅读和参考的资源。 ### 回答3: 《Jetpack架构组件从入门到精通》.pdf 是一本介绍Android Jetpack架构组件的电子书,它有助于开发者学习和理解如何使用这些组件来构建高质量、稳定的Android应用程序。 Jetpack架构组件是由谷歌开发的一组库,旨在帮助开发者简化Android应用的开发过程。它提供了一系列的工具和组件,涵盖了各个方面,包括界面设计、数据库、网络通信、数据绑定、后台处理等。 这本电子书从入门到精通地介绍了各个组件的使用方法和最佳实践。它首先详细介绍了Jetpack架构组件的核心概念和优势,让读者了解为什么要使用这些组件。 然后,电子书逐一介绍了常用的Jetpack组件,如Lifecycle、ViewModel、Room、LiveData、Navigation等。每个组件都被详细地讲解,包括其作用、使用方法和示例代码。读者可以通过跟随书的案例来实际操作和理解这些组件的使用。 除了介绍各个组件,电子书还分享了一些进阶的使用技巧和开发经验。这些技巧包括如何优化应用性能、处理异步任务、实现数据缓存等。通过这些实用的技巧,开发者可以进一步提高应用的质量和用户体验。 总的来说,《Jetpack架构组件从入门到精通》.pdf 是一本很有价值的学习资料,对于想要深入学习和掌握Jetpack架构组件的开发者来说是必不可少的参考书籍。无论是初学者还是有经验的开发者,都可以从获得知识和技能的提升。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值