zoukankan      html  css  js  c++  java
  • Android——活动的生命周期与启动模式

    生命周期:

    原:http://blog.csdn.net/w709835509/article/details/7655240

     1 import android.app.Activity;
     2 import android.os.Bundle;
     3 
     4 public class MainActivity extends Activity {
     5     // 在这里进行初始化操作,如界面加载与事件绑定
     6     @Override
     7     public void onCreate(Bundle savedInstanceState) {
     8         super.onCreate(savedInstanceState);
     9         if (savedInstanceState != null) {
    10             // 恢复临时数据
    11             String tempData = savedInstanceState.getString("key");
    12             // ...
    13         }
    14     }
    15 
    16     // 在这里保存临时数据
    17     @Override
    18     public void onSaveInstanceState(Bundle outState) {
    19         super.onSaveInstanceState(outState);
    20         // 设活动A->B,A处于停止状态,可能被系统回收,此时在Back键,依然会回到A,但是会调用A的onCreate方法而不是onRestart,临时数据将不再存在,如界面数据
    21         // 通过Bundle这个参数,可以将临时数据保存,各种put...;当A再被创建时,可以取出Bundle存的数据,进行相关操作,如上:
    22         String tempData = "this is  temp data";
    23         outState.putString("key", tempData);
    24     }
    25 
    26     // 重启调用,由停止状态变为运行状态
    27     @Override
    28     public void onRestart() {
    29         super.onRestart();
    30         // 当知道这个进程中的活动已经可见之后,载入改变
    31     }
    32 
    33     // 在可见生存期开始时调用
    34     @Override
    35     public void onStart() {
    36         super.onStart();
    37     }
    38 
    39     // 活动已准备好和用户交互——在返回栈栈顶
    40     @Override
    41     public void onResume() {
    42         super.onResume();
    43         // 据说:恢复活动所需要的任何暂停的UI更新、线程或者进程,但是当不活动的时候,就挂起它们
    44     }
    45 
    46     // 活动暂停时,活动依然可见,如此时弹出对话框,活动就处于暂停
    47     @Override
    48     public void onPause() {
    49         // 据说:当活动不是前台的活动状态的活动时,挂起不需要更新的UI更新、线程或者CPU密集的进程。
    50         super.onPause();
    51         // 即释放CPU资源,保存关键数据,但是动作一定得快,否则影响新栈顶活动
    52     }
    53 
    54     // 活动完全不可见
    55     @Override
    56     public void onStop() {
    57         // 据说:当进程不可见的时候,挂起不需要的剩下的UI更新、线程或者处理,保存所有的编辑或者
    58         // 状态改变,因为这个进程可能会被销毁(从而为其他进程释资源)
    59         super.onStop();
    60     }
    61 
    62     // 在完整生存期结束时调用
    63     @Override
    64     public void onDestroy() {
    65         // 清空所有的资源,包括结束线程、关闭数据库连接等。
    66         super.onDestroy();
    67     }
    68 
    69 }

     活动的四种启动模式:

     目前一直没用到过这个启动模式,简单总结一下,以备后用

    启动模式需要在Manifest中注册,在Activity中增加一项launchMode,如:android:launchMode = "singleTop"

    主要是指定Android管理返回栈时如何对已经存在的活动进行控制

    1.standard:默认如此

      每次启动活动时,都会创建一个新的活动,无论返回栈中是否存在该活动

    2.singleTop

      启动活动时,当且仅当活动在栈顶,此时会直接调用该活动而不重新创建

    3.singleTask

      启动活动时,如果返回栈中存在这个活动的实例,这个活动之上的所有活动将被出栈,只剩下这一个任务!否则才创建新实例

    4.singleInstance

      目的:不同程序之间共享活动

      前三者做不到的原因:每个程序会有自己的返回栈,同一个活动在另一个返回栈入栈时,必然是创建了一个新的实例!

      单例模式下,会用一个单独的返回栈管理这个活动,无论是哪个程序来访问这个活动,都会共用该返回栈,从而共享!

  • 相关阅读:
    【Java EE 学习 81】【CXF框架】【CXF整合Spring】
    【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】
    【Java EE 学习 80 上】【WebService】
    【Java EE 学习 79 下】【动态SQL】【mybatis和spring的整合】
    【Java EE 学习 79 上】【mybatis 基本使用方法】
    【Java EE 学习 78 下】【数据采集系统第十天】【数据采集系统完成】
    【Java EE 学习 78 中】【数据采集系统第十天】【Spring远程调用】
    【Java EE 学习 78 上】【数据采集系统第十天】【Service使用Spring缓存模块】
    【Java EE 学习 77 下】【数据采集系统第九天】【使用spring实现答案水平分库】【未解决问题:分库查询问题】
    【Java EE 学习 77 上】【数据采集系统第九天】【通过AOP实现日志管理】【通过Spring石英调度动态生成日志表】【日志分表和查询】
  • 原文地址:https://www.cnblogs.com/erhai/p/4987460.html
Copyright © 2011-2022 走看看