目录

Jetpack

1、那么Jetpack是什么呢?

2、为何使用Jetpack?

3、 Jetpack与AndroidX

LifeCycle

1、LifeCycle的作用​编辑

2、 LifeCycle应用


Jetpack

Jetpack,我觉得翻译为“飞行器”更好听,因为Google针对编程历史乱象,整理出一套组件库,帮助开发者创造更完美的应用作品。现在市面上,很多公司招聘面试要求渐渐把Jetpack看作必会技能,Google也在疯狂的安利Jetpack组件,和Kotlin一样属于亲儿子一样了。

1、那么Jetpack是什么呢?

如图所示,Jetpack是一个由多个技术库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种Android版本和设备中一致运行的代码,让开发者精力集中编写重要的代码。

2、为何使用Jetpack?

  • 遵循最佳做法:Android Jetpack 组件采用最新的设计方法构建,具有向后兼容性,可以减少崩溃和内存泄露。
  • 消除样板代码:Android Jetpack 可以管理各种繁琐的Activity(如:后台任务、导航和生命周期管理),以便你可以专注于打造出色的应用。
  • 减少不一致:这些库可在各种Android 版本和设备中以一致的方式运作,助你降低复杂性!

3、 Jetpack与AndroidX

  • AndroidX命名空间中包含Android Jetpack库
  • AndroidX代替Android Support Library
  • AAC(Android Architecture Component) 中的组件并入AndroidX
  • 其他一些需要频繁更新和迭代的特性也并入了AndroidX

LifeCycle

LifeCycle顾名思义是用来帮助开发者建立可感知生命周期的jetpack组件之一。LifeCycle在其内部管理自己的生命周期,从而解藕页面和组件,降低内存泄露发生的可能性,Activity、Fragment、Service、Application均有LifeCycle支持。

1、LifeCycle的作用

如图所示,LifeCycle用来监听Activity与Fragment的生命周期变化。

2、 LifeCycle应用

例如,一般我们在Activity中使用计时器时会在生命周期onPause和onReSume对其操作。因为计时器是长周期的变量,如果Activity关闭了,但没有关闭计时器,就会继续持用activity的引用造成内存泄露。

1、设计组件

//自定义了控件,继承了Chronometer计时器,实现了LifecycleObserver接口
@SuppressLint("ViewConstructor")
class MyChronometer : Chronometer, LifecycleObserver {constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)var elapsedTime: Long = 0//计时开始 ,方法添加了注解@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)open fun startMeter() {base = SystemClock.elapsedRealtime() - elapsedTimestart()}//计时暂停 ,方法添加了注解@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)open fun stopMeter() {elapsedTime = SystemClock.elapsedRealtime() - basestop()}
}

2、使用组件

class Step2Activity : AppCompatActivity() {private var chronometer: MyChronometer? = nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)//组件chronometer = findViewById(R.id.chronometer)//添加观察者lifecycle.addObserver(chronometer!!)}
}

 3、总结LifeCycle的使用

1、继承LifeCycle Observer方法

class lifecycleTest : LifecycleObserver {@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)fun onCreate() {}@OnLifecycleEvent(Lifecycle.Event.ON_START)fun onStart() {}@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)fun onResume() {}@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)fun onPause() {}@OnLifecycleEvent(Lifecycle.Event.ON_STOP)fun onStop() {}@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)fun onDestroy() {}
}

2、 添加观察者

  lifecycle.addObserver(lifecycleTest)

Android Jetpack之LifeCycle相关推荐

  1. Android JetPack系列---Lifecycle

    Android JetPack系列-Lifecycle jetpack也出来很长一段时间了,最近比较闲,然后顺便记录一下自己的学习.然后准备打算的是写一个一系列的文章来完成自己对jetpack 的了解 ...

  2. android Jetpack之Lifecycle的使用

    Lifecycle是Jetpack提供的一个用于监听生命周期的库.我们知道在使用Activity和Fragment的时候,特别是两者一起使用的时候,生命周期将变得非常的复杂.而且我们需要在Activi ...

  3. Android Jetpack之DataBinding+ViewModel+LiveData+Room

    Android Jetpack之ViewModel.LiveData Android Jetpack之LifeCycle 前言 Jetpack是一个由多个技术库组成的套件,可帮助开发者遵循最佳做法,减 ...

  4. Android Jetpack组件ViewModel基本使用和原理分析

    本文整体流程:首先要知道什么是 ViewModel,然后演示一个例子,来看看 ViewModel 是怎么使用的,接着提出问题为什么是这样的,最后读源码来解释原因! 1.什么是ViewModel 1.1 ...

  5. Android Jetpack 组件之 Lifecycle源码

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  6. Android Jetpack 组件之 Lifecycle使用

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  7. Android databingding与jetpack的lifecycle使用与比较

    1.开发环境Android studio 3.4.0,kotlin 2.databinding用法 3.jetpack lifecycles的LiveData 和 ViewModel用法 测试效果如下 ...

  8. Android Jetpack架构组件之 Room(使用、源码篇)

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发 ...

  9. Android Jetpack组件之Hilt使用

    前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. And ...

最新文章

  1. 字符串多模式精确匹配(脏字/敏感词汇/关键字过滤算法)——TTMP算法 之实战F模式...
  2. 阿里将AI引入时尚界,消费者会对程序员的审美买账吗?
  3. 专访香港大学罗平:师从汤晓鸥、王晓刚,最早将深度学习应用于计算机视觉的「先行者」
  4. qii, sopc, nios ii 10.1 IP核设计,LED验证死活不行,感觉很神奇
  5. 计算机联锁站按钮继电器电路,计算机联锁系统与站内各种电路结合说明.DOC
  6. 初试poi HssfWorkBook导出excel
  7. 团队-Forward团队一阶段互评
  8. [Unity] 战斗系统学习 8:构建 TPS 框架 3:mono 组件
  9. 织梦CMS内核宝宝算命取名企业模板
  10. 大道至简:算法工程师须知的十个炼丹trick
  11. Hive 使用问题集锦
  12. chrome插件开发基础以及如何防止劫持
  13. 编译原理常用简称或英文原称(思维导图形式)
  14. 002-CentOS7 固定IP
  15. 苹果产品介绍合集(加广告语和官方介绍)第二版--由Apple_VM_Xiaoqie整理(微信,抖音同号)
  16. sql统计表个数以及表中字段个数
  17. vue3 Component inside <Transition> renders non-element root node that cannot be animated.
  18. 【ubuntu常规使用】修改分辨率
  19. [案例4-2]饲养员喂养动物
  20. PDFbox的head is mandatory问题

热门文章

  1. JDBC requires that the JdbcType must be specified for all nullable parameters
  2. k近邻算法_【机器学习】K近邻算法(KNN)
  3. 名悦集团让车友放心购买车,用好车
  4. Dr. Oded Gottesman:compandent CEO
  5. 网络安全实验室(基础关刷题)-WP
  6. 深度解决npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
  7. 设计模式的意图和适用性
  8. 给定n种物品和一个背包。物品 i 的重量是wi.......
  9. 新版CKA2020-考前准备-psi
  10. CKA中国区线下考试指南