Activity有几点你可能不知道的

做Android的同学说起Activity,那绝对是熟悉的不能再熟悉了,但是越熟悉的东西往往越陌生。我们真的了解她吗?她是我们所认识的那样吗?或许是,或许不是!了解与否,让我们往下看。首先借Android官网的这张图来展现Activity的生命周期,这张金字塔图比起那张所有书上都有的生命周期流程图绝对要来的爽快:

Activity有几点你可能不知道的

从上图可以看到,最右边下方的Android机器人代表启动一个Activity,经过一系列的操作和过程,经过三个生命周期回调方法,到达金字塔的顶层,爬到顶层就可以供用户操作了。然后从金字塔顶往下,再经过三个生命周期方法,就又到了金字塔的另一边底层,Activity就销毁了。但是当下金字塔的时候,只要没到最下面,都有通道可以回到最顶层。这有几点或许是平时我们没有注意的:


1.Activity在onStart方法调用后,就处于可见状态了(visible)

2.当经过onPause方法后处于暂停状态(Paused),这时Activity处于半透明状态,为不可操作的,比如弹出一个模态框。这时Activity不会执行任何代码

3.Activity在调用onStop方法后即处于用户不可见的状态了(invisible)

4.onCreate方法在整个生命周期只会被调用一次

5.自定义Activity继承Activity类后有没有需要必须实现的方法?答案是没有,但是要想启动和显示一个Activity,就必须实现onCreate方法并指定布局文件

6.大部分的清理操作应该在onPause和onStop中执行,如果在onCreate中开启了耗时线程或耗资源的线程操纵,应该在onDestroy中杀死线程


官方文档中有这么一段注释值得我们注意:

Note:The system callsonDestroy()after it has already calledonPause()andonStop()in all situations except one: when you callfinish()from within theonCreate()method. In some cases, such as when your activity operates as a temporary decision maker to launch another activity, you might callfinish()from withinonCreate()to destroy the activity. In this case, the system immediately callsonDestroy()without calling any of the other lifecycle methods.


系统一般都是在执行完onPause和onStop方法后再执行onDestroy方法,但是当在onCreate方法中调用了Activity的finish()方法后,比如在onCreate方法里启动新的Activity并调用了finish方法,这时系统会直接调用onDestroy方法!

以上就是关于Activity一些你可能不知道或是忽视的,欢迎大家补充交流!


加入我们的或微信公众账号请查看:Ryan's zone公众账号及