Android Lifecycle组件使用

Android中很多组件都具备生命周期功能,系统框架会在适合时机调用相应的生命周期方法,作为开发者在开发业务时可能需要争对组件的生命周期需要作出相应的处理;比如onDestroy需要释放资源,防止内存泄漏甚至引发应用崩溃;

Android的生命周期Lifecycle就是用来解决该问题,同时可以将业务处理代码从Fragment或Activity相关的生命周期方法中分离,这样写出的代码更有条理性便于代码后期维护

1. 集成

添加Lifecycle轻量级库

implementation "android.arch.lifecycle:runtime:1.1.1"
implementation 'com.android.support:appcompat-v7:28.0.0'

2. 使用

public class HomeActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getLifecycle().addObserver(new HomeObserver());}
}public class HomeObserver implements LifecycleObserver {@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)void onCreate() {Log.d("dbs", "===onCreate===");}@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)void onResume() {Log.d("dbs", "===onResume===");}@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)void onDestroy() {Log.d("dbs", "===onDestory===");}
}

启动APP,查看控制台输出日志

2020-03-21 21:17:23.850 D/dbs: ===onCreate===
2020-03-21 21:17:23.859 D/dbs: ===onResume===

点击返回

2020-03-21 21:17:27.860 D/dbs: ===onDestory===

大家可以看到使用非常简单,如果需要观察HomeActivity生命周期,只需要将观察者(HomeObserver)添加到Lifecycle中即可;一旦HomeActivity生命周期发生变化,HomeObserver就能被感知到,自动触发相关方法

3. 疑问

HomeObserver是如何感知到HomeActivity生命周期呢?

下篇我将从源码角度进行剖析HomeActivity的生命周期事件是如何转发到HomeObserver中
Android Lifecycle源码解析(一)

Android Lifecycle组件使用相关推荐

  1. Android Jetpack 组件之 Lifecycle源码

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

  2. Android Jetpack 组件之 Lifecycle使用

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

  3. 初学 Android 架构组件之 Lifecycle

    在开发应用时,我们可能会基于一系列的生命周期实现某种功能.为了复用,也为了不让应用组件变得很臃肿,实现该功能时会选择与生命周期组件解藕,独立成一种组件.这样能够很方便地在应用组件中使用,比如:Acti ...

  4. 视频教程-Lifecycle组件快速入门教程-Android

    Lifecycle组件快速入门教程 Android研发工程师.南京邮电大学毕业,曾就任于创新工场,现就任于某知名大型移动互联网公司,CSDN博客讲师.<libGDX移动游戏开发从入门到精通> ...

  5. 深圳腾讯内部Jetpack宝典意外流出!极致经典,堪称Android架构组件的天花板

    简介 Jetpack是一套库.工具和指南,可以帮助开发者更轻松地编写优质应用.这些组件可以帮助开发者遵循最佳做法.让开发者摆脱编写样板代码的工作并简化复杂任务,以便开发者将精力集中放在所需的代码上. ...

  6. Android Jetpack组件之Hilt使用

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

  7. Android Jetpack组件App Startup简析

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

  8. Android Jetpack组件之WorkManger使用介绍

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

  9. Android Jetpack组件之Navigation使用-源码

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

最新文章

  1. 通过打印学习Linux内核之sysfs(1)
  2. 【转发】什么时候该用委托,为什么要用委托,委托有什么好处
  3. Python实现按序合并多个pdf文件
  4. 百度自动驾驶出租车服务在北京全面开放 可免费试乘
  5. 计算机网络基础知识,仅此一篇足矣
  6. 中用BBP公式计算_【真课堂】7年级信息技术:数据计算
  7. Android 屏幕录制GIF脚本
  8. ieda 远程调试hive_idea 远程调试
  9. ppz css栅格框架
  10. Linux文件系统管理命令(第二版)
  11. MongoDB分布式集群分片
  12. [机器学习] ——KNN K-最邻近算法
  13. SCOM 2007 R2监控系统安装部署(一)SCOM简介及安装SQL Server 2008 R2 数据库
  14. 索引越界异常Exception java.lang.IndexOutOfBoundsException
  15. 华三H3C交换机路由器如何配置dhcp中继(dhcp relay)
  16. 顺丰android架构师,顺丰数据库运维架构.pdf
  17. Win10下SCP命令免密码上传、下载工程师服务器上的文件
  18. 如何将PDF压缩突破限制大小
  19. WWDC苹果开发者大会--直播
  20. 阿里云——媒体云(视频直播)

热门文章

  1. ipix matlab,IPIX-radar-data-for-matlab 网上提供的IPIX雷达数据导入matlab中用作算法验证等用途 - 下载 - 搜珍网...
  2. 直播预告 | AAAI 2022论文解读:融入知识图谱的分子对比学习
  3. ​最新综述!基于图神经网络的关系抽取技术进展
  4. 寻找想改变人工智能的“大人物”!2019百度奖学金正式启动
  5. 近期有哪些值得读的QA论文?| 专题论文解读
  6. Java动态代理的两种实现方法:JDK动态代理和CGLIB动态代理
  7. 使用技巧_Lodash 使用技巧
  8. Linux——Linux C语言编程基础知识
  9. Vue——全局element-resize-detector监听DOM元素
  10. 《Java程序设计》实验报告——Java的多线程机制