zoukankan      html  css  js  c++  java
  • Activity生命流程

    做Android的同学说起 Activity,那绝对是熟悉的不能再熟悉了,但是越熟悉的东西往往越陌生。我们真的了解她吗?她是我们所认识的那样吗?或许是,或许不是!了解与否, 让我们往下看。首先借Android官网的这张图来展现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 calls onDestroy() after it has already called onPause() and onStop() in all situations except one: when you call finish() from within the onCreate() method. In some cases, such as when your activity operates as a temporary decision maker to launch another activity, you might call finish()from within onCreate() to destroy the activity. In this case, the system immediately calls onDestroy()without calling any of the other lifecycle methods.


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

     

     

    (转自http://blog.csdn.net/ryantang03/article/details/8728279)

  • 相关阅读:
    JDBC 查询的三大参数 setFetchSize prepareStatement(String sql, int resultSetType, int resultSetConcur)
    有空必看
    SpringMVC 利用AbstractRoutingDataSource实现动态数据源切换
    FusionCharts JavaScript API Column 3D Chart
    FusionCharts JavaScript API
    FusionCharts JavaScript API
    Extjs 继承Ext.Component自定义组件
    eclipse 彻底修改复制后的项目名称
    spring 转换器和格式化
    Eclipse快速生成一个JavaBean类的方法
  • 原文地址:https://www.cnblogs.com/zhaoxinshanwei/p/3564774.html
Copyright © 2011-2022 走看看