zoukankan      html  css  js  c++  java
  • Activity生命周期

    Activity的生命周期

    Activity的基本生命周期如下代码 所示:

    Java代码

    public

    class MyActivity extends Activity {

    protected void onCreate(Bundle savedInstanceState);

    Protected void onStart();

    Protected void onResume();

    Protected void onPause();

    Protected void onStop(); 

    Protected void onDestroy();

    }

    你自己写的Activity会按需要 重载这些方法,onCreate是免不了的,在一个Activity正常启动的过程中,他们被调用的顺序是 onCreate -> onStart -> onResume, Activity被干掉的时候顺序是onPause -> onStop -> onDestroy ,这样就是一个完整的生命周期,但是有人问了 ,程序正运行着呢来电话了,这个程序咋办?中止了呗,如果中止的时候新出的一个Activity是全屏的那么:onPause->onStop ,恢复的时候onStart->onResume ,如果打断 这个应用程序的是一个ThemeTranslucent 或者Dialog Activity那么只是onPause ,恢复 的时候onResume 

    详细介绍一下这几个方法中系统在做什么以及我们应该做什么:

    onCreate: 在这里创建界面 ,做一些数据 的初始化工作

    onStart: 到这一步变成用户可见不可交互 的

    onResume: 变成和用户可交互 的,(activity 栈系统通过栈的方式管理这些个

    Activity的最上面,运行完弹出栈,则回到上一个Activity)

    onPause: 到这一步是可见但不可交互 的,系统会停止动画 等消耗CPU 的事情

    从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候

    你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在

    onResume里读出来,注意:这个方法里做的事情时间要短,因为下一

    activity不会等到这个方法完成才启动

    onstop: 变得不可见 ,被下一个activity覆盖了

    onDestroy: 这是activity被干掉前最后一个被调用方法了,可能是外面类调用finish

    法或者是系统为了节省空间将它暂时性的干掉,可以用isFinishing()来判断它,如果你有一个Progress Dialog在线程中转动,请在onDestroy里把他cancel掉,不然等线程结束的时候,调用Dialogcancel方法会抛异常的。

    onPauseonstop, onDestroy,三种状态下 activity都有可能被系统干掉

  • 相关阅读:
    FZU Problem 2169 shadow
    tomcat配置虚拟主机
    数据库设计中的14个技巧
    JSP动作--JSP有三种凝视方式
    BoundsChecker使用
    个人收藏的flex特效网址【经典中的极品】
    C++中的explicitkeyword
    Andorid Binder进程间通信---Binder本地对象,实体对象,引用对象,代理对象的引用计数
    深入浅出JMS(一)——JMS简单介绍
    一个有意思的编程练习站点
  • 原文地址:https://www.cnblogs.com/xingyyy/p/4331675.html
Copyright © 2011-2022 走看看