《第一行代码》学习笔记2--Activity生命周期

本文适合于对Android开发有一定了解,正在Android入门中的小白
Github源码:https://github.com/ZhangRui111/BlogActivityLifeCycle

Let's Go Android!

一、活动Activity的生命周期

《第一行代码》学习笔记2--Activity生命周期_第1张图片

(1)Android使用任务 Task来管理活动的,一个任务就是一组存放在栈里的活动集合,这个栈也被称为返回栈,系统总是会显示处于栈顶的Activity,当按下Back键或者finish()销毁一个活动时,处于栈顶的活动就会出栈。
(2)活动的状态:运行状态、暂停状态、停止状态、销毁状态。(系统倾向于回收的意愿依次递增,最倾向于回收销毁状态的Activity)
(3)活动的生存期:

  • 完整生存期,onCreate()和onDestroy()之间;
  • 可见生存期,onStart()和onStop()之间;
  • 前台生存期,onResume()和onPause()之间。

(4)自己简单的总结:

  • 只要Activity没有被回收,那么onCreate()方法就只会在活动初始化的时候调用一次。
  • 只要有另一个活动覆盖了当前活动,当前活动都会调用onPause()方法,若新的活动使得当前活动完全不可见,则当前活动另外还会调用onStop()方法。
  • 当前活动调用onPause()后处于暂停状态,想要返回运行状态只需要调用onResume()方法;若前活动调用onPause()以及onStop()后处于停止状态,想要返回运行状态需要依次调用onRestart()、onStart()以及onResume()方法;
  • 活动创建的时候依次调用onCreate()、onStart()以及onResume()方法;
  • 活动销毁的时候依次调用onPause()、onStop()以及onDestro()方法。

二、万一活动被回收了,如何处理临时数据?

  • onSaveInstanceState()回调方法,一定会在活动被回收之前调用,结合onCreate()方法中的Bundle参数,可以解决这个问题。具体代码参照demo-ActivityLifeCycleTest。

三、活动的启动模式:解决回退逻辑错乱(回退到错误的Activity)的问题

①standard:每次启动都会创建一个新的实例(默认模式)
  ②singleTop:启动活动时,若活动已经在栈顶,就直接使用,不再创建新的实例。
  ③singleTask:启动活动时,系统检查活动栈,若已经存在实例,则直接调用,在此实例之上的活动通通出栈。
  ④singleInstance:会启动一个新的栈来管理这个活动,可以实现其他程序和我们程序共享某个活动。

四、活动的最佳实践(Github源码):

(1)知晓当前是在哪一个活动;
(2)随时随地退出程序;
(3)启动某一个活动的最佳写法;

五、Activity打印Log常用的信息的方法:

 Log.d(“data” ,this.toString());
        ——打印Activity对象,例:com.example.activitytest.FirstActivity@4107c038
  Log.d(“data” ,“The task is” + getTaskId());  ——打印栈的id
  Log.d("data",getClass().getSimpleName());  ——打印Activity名称

原创文章,转载请注明出处:http://www.jianshu.com/p/b612cfef2d75

你可能感兴趣的:(《第一行代码》学习笔记2--Activity生命周期)