初识Kotlin 之2__探究Jetpack

长期以来,android官方没有制定一个项目架构的规范, 慢慢地就有第三方的项目架构例如XUtils 等引入到android平台上, 类似的还有MVP、MVVM等。

作为开发者, 我们需要思考一个问题: android开发为什么需要架构?

在传统的开发模式下,Activity 任务太重了,要负责UI展示,又要负责逻辑处理,还要创建子线程处理网络回调、 异常处理等等, 各个部分根本没有模块化、独立出来,

结果:以后维护越来越困难,越来越庞大,也不便于测试。 我们知道项目一般不止一个人开发, 特别是在企业里更是不止一个人开发,

时间一长很难找到代码, 同时会出现改一处,动全身,产生新bug. 

出现这种局面,原因就是: 没有任何架构上的划分。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2018年google 推出了一个全新的开发组件工具集Jetpack,  并将Architecture Components 作为Jetpack的一部分纳入其中。

1  Jetpack中的组件有一个特点, 大部分组件不依赖于任何Android系统版本, 这些组件通常是定义在 AndroidX库当中的。

下面看一张Jetpack架构图

                                                                                       图1   Jetpack 应用架构图

可以看到, Jetpack 由基础、 架构、行为、界面 4部分组成。

目前android官方 推荐的项目架构是MVVM,  Jetpack中的许多架构组件 是为MVVM 架构 打造的。有哪些主要架构看一个图:

简要介绍一下各组件

1. ViewModel 的作用是帮助Activity分担一部分工作, 它是专门用于存放与界面相关的数据的。  也就是说它是为减少Activity 中的逻辑。

2. Lifecycles 用于在一个非Activity 类中去感知Activity 的生命周期。   同样也可以在非Fragment 类去感知Fragment的生命周期。

3. LiveData 是一种响应式编程组件, 它可以包含任何类型的数据,并在数据发生变化时通知观察者。

     如果在ViewModel 内部开启了线程去执行一些耗时操作,那么在界面上,此时去获取最新的数据,得到的数据还是之前的数据。

    解决方法是: 将界面上操作涉及的数据使用LiveData来包装,然后在Activity 去观察它,就可以主动将数据变化通知给Activity了。

4. Room 是android官方推出的一个ORM框架,用于数据库操作。 Room 主要由Entity(实体)、Dao 和 Database 3部分组成。

5. WorkManager 与Android的后台机制 相关, WorkManager很适合用于处理一些要求定时执行的任务,它可以根据系统的版本自动选择底层是使用AlarmManager 实现还是 JobScheduler 实现, 从而降低了我们的使用成本。

     WorkManger 跟 Service 不同,也没有直接的关系。 它可以保证即使在应用退出甚至手机重启的情况下,之前注册的任务仍然将会得到执行。

   它适合用于执行一些定期和服务器交互的任务,例如定时同步数据。

  WorkManager 注册的周期性任务不能保证一定会准时执行, 这是系统为了减少电量消耗,可能会将触发时间临近的几个任务放在一起执行。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值