Activity生命周期冷知识

首先我们来一张神图介绍一下基础:

Activity生命周期冷知识_第1张图片
Activity生命周期
  • onCreate:表示activity正在创建,可以做一些初始化的工作,比如加载界面布局资源。
  • onRestart:表示activity正在重新启动,一般情况下当当前Activity从不可见到可以见的时候,该方法会被调用。
  • onStart:表示Activity正在被启动,activity可见但是没有出现在前台,不可以操作。
  • onResume:表示activity已经可见了,并且出现在前台活动,可以做一些储存数据的操作,但不能做太耗时操作。
  • onPause:表示activity正在停止,处于可见但是不可以操作。
  • onStop:表示Activity即将停止,activity变得不可以见,可以做稍微重点的回收工作。
  • onDestory:表示activty即将被销毁,我们可以做一些回收工作和资源的最终释放。

下面要介绍几个冷知识

  • 当前Activity A启动一个Activity B的时候一般会调用A的onPause->onStop,但是onStop不是必然的 ,当B采用了透明主题的时候,A是不会调用onStop的(这也是是侧滑退出的实现原理)

  • 当前Activity A启动一个Activity B的时候,只有当A的onPause方法执行完毕的时候B的onCreate方法才会执行,但是A的onStop就不一定了,可能会在B的onResume之后。

  • 当前Activity A启动一个Activity B的时候,但是又切换回A的时候一般会调用A的onNewIntent->onRestart->onStart->onResume。(目前针对只在同一个堆栈中的情况)但是A如果被系统回收的情况,调用如下onCreate->onStart->onResume

  • 当用户从任务栏杀进程的时候是不会走接下来的onDestory等生命周期的,但是home出去的时候会走onPause->onStop

  • 当使用System.exit(0)来退出当前进程的时候,不会走当前Activity A任何生命周期,同时上一个Activity B(不在同一进程)的onActivityResult不会有正确回调结果,但是在System.exit(0)前面加一个finish()之后B的 onActivityResult就会有正确结果,但是A的生命周期不会被调用,finish方法中的Log不会被打印出来。

你可能感兴趣的:(Activity生命周期冷知识)