一、Activity生命周期介绍



我们在学Java Web时会学到Servlet的生命周期,因此对生命周期的概念已经有一定了解,简单地说就是某个事物从出生到死亡的过程。

Activity也存在声明周期,从Activity被创建到最后被销毁;Activity运行时可能会受到一些突发事件的影响,例如在使用Activity时突然来了一个电话,则Activity需要在生命周期函数中设置;

下图是Activity生命周期中最经典的图:

7个生命周期方法:



(1)onCreate(Bundle bundle);创建Activity

(2)onStart();开启Activity时调用

(3)onResume();在Activity显示时调用

(4)onPause();在某个Activity被覆盖,但是又没有被完全覆盖时调用

(5)onStop();在某个Activity被覆盖时调用

(6)onRestart();在某个Activity被覆盖后又重新显示时调用

(7)onDestroy();最后销毁时调用

这些方法总结后能够有几个规律:



(1)onCreate()-->onStart()-->onResume()为开始显示Activity的过程

(2)onResume()-->onPause()为此Activity不在最前面,但是还是可见的过程

(3)onResume()-->onPause()-->onStop()为Activity被覆盖的过程

(4)onPause()-->onResume()为Activity从原本可见但不是最前面到重新到最前面的过程

(5)onStop()-->onRestart()-->onStart()-->onResume()为Activity从不可见到显示在最前面的过程

二、非生命周期但重要的方法

当应用遇到意外情况(如内存不足,用户直接按home键等)需要保存一些临时数据,比如你填写EditText写到一半,你按错键了,按成home键,则如果默认情况,会丢失全部的输入信息,但是这样对用户来说就会有损失,因此我们需要下面两个方法:

1.onSaveInstanceState(Bundle bundle);  意外情况下保存数据

当意外发生时保存数据调用

由运行状态进入暂停状态或停止状态调用

屏幕旋转时调用

2.onRestoreInstanceState(Bundle bundle); 恢复数据

比如:

我们要做到保留EditText输入的信息,因此代码为:

[java] view
plain
copy

  1. package com.xiazdong.activity.life;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.widget.EditText;
  5. public class MainActivity extends Activity {
  6. private EditText editText ;
  7. @Override
  8. public void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.main);
  11. editText = (EditText)this.findViewById(R.id.editText);
  12. }
  13. @Override
  14. protected void onRestoreInstanceState(Bundle savedInstanceState) {
  15. String name = savedInstanceState.getString("name"); //恢复EditText的数据
  16. editText.setText(name);
  17. super.onRestoreInstanceState(savedInstanceState);
  18. }
  19. @Override
  20. protected void onSaveInstanceState(Bundle outState) {   //保存EditText的数据
  21. outState.putString("name", editText.getText()+"");
  22. super.onSaveInstanceState(outState);
  23. }
  24. }

三、其他一些设置

<activity android:theme="@android:style/Theme.Dialog"/>可以将Activity设置成窗口模式;

Android入门:Activity生命周期的更多相关文章

  1. android入门 — Activity生命周期

    Activity总共有7个回调方法,代表着不同的生命周期的环节. 1.onCreate() 在活动第一次被创建的时候调用.在这个方法中需要完成活动的初始化操作,比如说加载布局.绑定事件等. 2.onS ...

  2. Android开发——Activity生命周期

    Android开发--Activity生命周期 Activity作为四大组件之首,也是使用最频繁的一种组件.本文将主要讲解Activity生命周期,包括正常情况下的Activity生命周期和异常情况下 ...

  3. android开发------Activity生命周期

    这几天工作比较忙,基本没有什么时间更新播客了. 趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征 什么是生命周期 在还没有接触android开发的时候,听到有人说Ac ...

  4. Android编程: Activity生命周期和LogCat使用

    学习内容:Activity生命周期和LogCat使用 ====Activity生命周期==== 图示(转载): 创建    onCreate重启    onRestart开始    onStart恢复 ...

  5. Android开发--Activity生命周期回顾理解

    Activity和Servlet一样,都用了回调机制.我们通过类比servlet来学习Activity.当一个servlet开发出来之后,该servlet运行于Web服务器中.服务器何时创建servl ...

  6. android 17 activity生命周期

    手机指南针传感器处于手机头部. Activity生命周期: 启动. onCreat()方法:初始化布局对象,设置监听器. onstart()方法:注册监听器. onResume():activity已 ...

  7. Android之Activity生命周期简介

    概述 有图有真相,所以先上图: 上图是从Android官网截下的Activity的生命周期流程图,结构非常清晰,它描述了Activity在其生命周期中所有可能发生的情况以及发生的先后顺序,下面就将结合 ...

  8. 浅谈Android之Activity生命周期

     Activity作为四大组件之一,出现的频率相当高,基本上我们在android的各个地方都能看见它的踪影,因此深入了解Activity,对于开发高质量应用程序是很有帮助的.今天我们就来详细地聊聊Ac ...

  9. 【Android】Activity 生命周期具体解释

    与其它编程模式不同,android中的Activity没有main()函数.我们无法决定Activity的创建和销毁过程,Activiy的创建和销毁(即生命周期)由系统完毕,系统会在Activity的 ...

  10. Android关于Activity生命周期详解

    子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精 ...

随机推荐

  1. hadoop作业调优参数整理及原理

    hadoop作业调优参数整理及原理 10/22. 2013 1 Map side tuning参数 1.1 MapTask运行内部原理 当map task开始运算,并产生中间数据时,其产生的中间结果并 ...

  2. 【Qt官方例程学习笔记】Application Example(构成界面/QAction/退出时询问保存/用户偏好载入和保存/文本文件的载入和保存/QCommandLineParser解析运行参数)

    The Application example shows how to implement a standard GUI application with menus, toolbars, and ...

  3. 新安装的 ubuntu 下 make menuconfig 报错

    环境:Ubtuntu 12.04 LTS 新安装的ubuntu 出现不能使用make menuconfig. 1.sudo apt-get update 更新软件 2.安装下面的软件 sudo apt ...

  4. Android 全局错误管理

    package com.wlwl.yiyuan; import java.io.File; import java.io.PrintWriter; import java.io.StringWrite ...

  5. 【前端自动化】Gulp的使用(一):安装gulp

    作为一个.NET码农,在前端高速发展的时代,深深感觉自己那么点“前端”技术不够看,比如开发出来的js css等文件庞大,不便于管理,还记得以前的开发就是累加 html  css   jquery, 现 ...

  6. SQL Server 练习

    use master if exists(select * from sys.databases where name='db_Test') drop database db_Test go crea ...

  7. 远程控制Ubuntu系统小结

    一.在远程控制的Ubuntu上,按shift键总会出现中文字符 因为在Ubuntu中,默认启动搜狗输入法,导致在按shift键时,不停出现中文字符 一开始以为是因为远程控制,在主控机和被控机的输入法之 ...

  8. java知识点积累(一)

    知识点积累 1.关于final的重要知识点: final关键字可以用于成员变量.本地变量.方法以及类: final修饰的成员变量必须在声明时被初始化,或者在构造器中初始化,否则就会报编译错误: 不能够 ...

  9. C#判断字符串是否是数字最简单的正则表达式

    if (theStr!= null)//注意加非空判断,否则报错 { System.Text.RegularExpressions.Regex rex = new System.Text.Regula ...

  10. sg函数和nim游戏的关系

    sg函数和nim游戏的关系 本人萌新,文章如有错漏请多多指教-- 我在前面发了关于nim游戏的内容,也就是说给n堆个数不同的石子,每次在某个堆中取任意个数石子,不能取了就输了.问你先手是否必胜.然后只 ...