前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 进阶解密笔记-插件化

Android 进阶解密笔记-插件化

作者头像
Yif
发布2019-12-26 15:02:09
7740
发布2019-12-26 15:02:09
举报
文章被收录于专栏:Android 进阶Android 进阶
undefined
undefined
img
img

生命周期中各个方法的含义和作用

常见生命周期

  1. onCreate:create表示创建,这是Activity生命周期的第一个方法,也是我们在android开发中接触的最多的生命周期方法。它本身的作用是进行Activity的一些初始化工作,比如使用setContentView`加载布局,对一些控件和变量进行初始化等。但也有很多人将很多与初始化无关的代码放在这,其实这是不规范的。 此时Activity还在后台,不可见。所以动画不应该在这里初始化,因为看不到……
  2. onStartstart表示启动,这是Activity生命周期的第二个方法。 此时Activity已经可见了,但是还没出现在前台,我们还看不到,无法与Activity交互。其实将Activity的初始化工作放在这也没有什么问题,放在onCreate中是由于官方推荐的以及我们开发的习惯。
  3. onResumeresume表示继续、重新开始,这名字和它的职责也相同。此时Activity经过前两个阶段的初始化已经蓄势待发。 Activity在这个阶段已经出现在前台并且可见了。这个阶段可以打开独占设备
  4. onPausepause表示暂停,当Activity要跳到另一个Activity或应用正常退出时都会执行这个方法。紧接着onStop方法就会被调用,我们可以进行一些轻量级的存储数据和去初始化的工作,不能太耗时,因为在跳转Activity时只有当一个Activity执行完了onPause方法后另一个Activity才会启动, android中指定如果onPause在500ms即0.5秒内没有执行完毕的话就会强制关闭Activity。 **从生命周期图中发现可以在这快速重启,但这种情况其实很罕见,比如用户切到下一个Activity的途中按back键快速得切回来。
  5. onStopstop表示停止,此时Activity已经不可见了,但是Activity对象还在内存中,没有被销毁。这个阶段的主要工作也是做一些资源的回收工作。
  6. onDestroydestroy表示毁灭,这个阶段Activity被销毁,不可见,我们可以将还没释放的资源释放,以及进行一些回收工作。
  7. onRestartrestart表示重新开始,Activity在这时可见,当用户按Home键切换到桌面后又切回来或者从后一个Activity切回前一个Activity就会触发这个方法。这里一般不做什么操作。

不常见生命周期

Android 完整生命周期: onCreate –> onContentChanged –> onStart –> onPostCreate –> onResume –> onPostResume –> onPause –> onStop –> onDestroy

  1. onContentChanged

onContentChanged()Activity中的一个回调方法 当Activity的布局改动时,即setContentView()或者addContentView()方法执行完毕时就会调用该方法, 例如,Activity中各种ViewfindViewById()方法都可以放到该方法中。

  1. onPostCreateonPostResume

onPostCreate方法是指onCreate方法彻底执行完毕的回调,系统做最后的初始化操作,onPostResume类似,这两个方法官方说法是一般不会重写。 现在知道的做法也就只有在使用ActionBarDrawerToggle的使用在onPostCreate需要在屏幕旋转时候等同步下状态,Google官方提供的一些实例就是如下做法:

代码语言:javascript
复制
@Overrideprotected void onPostCreate(Bundle savedInstanceState) {    super.onPostCreate(savedInstanceState); 
// Sync the toggle state after onRestoreInstanceState has occurred.   
mDrawerToggle.syncState();}

生命周期区别

onCreate和onStart之间区别

  1. 可见与不可见的区别。前者不可见,后者可见。
  2. 执行次数的区别。onCreate方法只在Activity创建时执行一次,而onStart方法在Activity的切换以及按Home键返回桌面再切回应用的过程中被多次调用。因此Bundle数据的恢复在onStart中进行比onCreate中执行更合适。
  3. onCreate能做的事onStart其实都能做,但是onstart能做的事onCreate却未必适合做。

onStart方法和onResume方法区别

  1. 是否在前台。onStart方法中Activity可见但不在前台,不可交互,而在onResume中在前台。
  2. 职责不同,onStart方法中主要还是进行初始化工作,而onResume方法,根据官方的建议,可以做开启动画和独占设备的操作。

onPause方法和onStop方法区别

  1. 是否可见。onPauseActivity可见,onStopActivity不可见,但Activity对象还在内存中。
  2. 在系统内存不足的时候可能不会执行onStop方法,因此程序状态的保存、独占设备和动画的关闭、以及一些数据的保存最好在onPause中进行,但要注意不能太耗时。

onStop方法和onDestroy方法区别

onStop阶段Activity还没有被销毁,对象还在内存中,此时可以通过切换Activity再次回到该Activity,而onDestroy阶段Acivity被销毁

为什么切换Activity时各方法的执行次序是(A)onPause→(B)onCreate→(B)onStart→(B)onResume→(A)onStop而不是(A)onPause→(A)onStop→(B)onCreate→(B)onStart→(B)onResume

  1. 一个Activity或多或少会占有系统资源,而在官方的建议中,onPause方法将会释放掉很多系统资源,为切换Activity提供流畅性的保障,而不需要再等多两个阶段,这样做切换更快。
  2. 按照生命周期图的表示,如果用户在切换Activity的过程中再次切回原Activity,是在onPause方法后直接调用onResume方法的,这样onPause→onStop→onRestart→onStart→onResume要快得多。

onSaveInstanceState和onRestoreInstanceState

两者执行时间

targetSdkVersion小于3时onSaveInstanceState在onPause方法中调用的,而大于3时是在onStop方法中调用的。而onRestoreInstanceState是在onStart之后、onResume之前调用的**

onSaveInstanceState调用

  1. Activity被覆盖或退居后台之后,系统资源不足将其杀死,此方法会被调用;
  2. 在用户改变屏幕方向时,此方法会被调用;
  3. 在当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台时,此方法会被调用。第一种情况我们无法保证什么时候发生,系统根据资源紧张程度去调度;第二种是屏幕翻转方向时,系统先销毁当前的Activity,然后再重建一个新的,调用此方法时,我们可以保存一些临时数据;第三种情况系统调用此方法是为了保存当前窗口各个View组件的状态。

onSaveInstanceState的调用顺序是在onStop中调用。

onRestoreInstanceState调用

  1. Activity被覆盖或退居后台之后,系统资源不足将其杀死,然后用户又回到了此Activity,此方法会被调用;
  2. 在用户改变屏幕方向时,重建的过程中,此方法会被调用。我们可以重写此方法,以便可以恢复一些临时数据。

onRestoreInstanceState的调用顺序是在onStart之后;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年7月18日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 生命周期中各个方法的含义和作用
    • 常见生命周期
      • 不常见生命周期
      • 生命周期区别
        • onCreate和onStart之间区别
          • onStart方法和onResume方法区别
            • onPause方法和onStop方法区别
              • onStop方法和onDestroy方法区别
                • 为什么切换Activity时各方法的执行次序是(A)onPause→(B)onCreate→(B)onStart→(B)onResume→(A)onStop而不是(A)onPause→(A)onStop→(B)onCreate→(B)onStart→(B)onResume
                • onSaveInstanceState和onRestoreInstanceState
                  • 两者执行时间
                    • onSaveInstanceState调用
                      • onRestoreInstanceState调用
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档