Android入门:Activity生命周期
一、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输入的信息,因此代码为:
- package com.xiazdong.activity.life;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.EditText;
- public class MainActivity extends Activity {
- private EditText editText ;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- editText = (EditText)this.findViewById(R.id.editText);
- }
- @Override
- protected void onRestoreInstanceState(Bundle savedInstanceState) {
- String name = savedInstanceState.getString("name"); //恢复EditText的数据
- editText.setText(name);
- super.onRestoreInstanceState(savedInstanceState);
- }
- @Override
- protected void onSaveInstanceState(Bundle outState) { //保存EditText的数据
- outState.putString("name", editText.getText()+"");
- super.onSaveInstanceState(outState);
- }
- }
三、其他一些设置
<activity android:theme="@android:style/Theme.Dialog"/>可以将Activity设置成窗口模式;
Android入门:Activity生命周期的更多相关文章
- android入门 — Activity生命周期
Activity总共有7个回调方法,代表着不同的生命周期的环节. 1.onCreate() 在活动第一次被创建的时候调用.在这个方法中需要完成活动的初始化操作,比如说加载布局.绑定事件等. 2.onS ...
- Android开发——Activity生命周期
Android开发--Activity生命周期 Activity作为四大组件之首,也是使用最频繁的一种组件.本文将主要讲解Activity生命周期,包括正常情况下的Activity生命周期和异常情况下 ...
- android开发------Activity生命周期
这几天工作比较忙,基本没有什么时间更新播客了. 趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征 什么是生命周期 在还没有接触android开发的时候,听到有人说Ac ...
- Android编程: Activity生命周期和LogCat使用
学习内容:Activity生命周期和LogCat使用 ====Activity生命周期==== 图示(转载): 创建 onCreate重启 onRestart开始 onStart恢复 ...
- Android开发--Activity生命周期回顾理解
Activity和Servlet一样,都用了回调机制.我们通过类比servlet来学习Activity.当一个servlet开发出来之后,该servlet运行于Web服务器中.服务器何时创建servl ...
- android 17 activity生命周期
手机指南针传感器处于手机头部. Activity生命周期: 启动. onCreat()方法:初始化布局对象,设置监听器. onstart()方法:注册监听器. onResume():activity已 ...
- Android之Activity生命周期简介
概述 有图有真相,所以先上图: 上图是从Android官网截下的Activity的生命周期流程图,结构非常清晰,它描述了Activity在其生命周期中所有可能发生的情况以及发生的先后顺序,下面就将结合 ...
- 浅谈Android之Activity生命周期
Activity作为四大组件之一,出现的频率相当高,基本上我们在android的各个地方都能看见它的踪影,因此深入了解Activity,对于开发高质量应用程序是很有帮助的.今天我们就来详细地聊聊Ac ...
- 【Android】Activity 生命周期具体解释
与其它编程模式不同,android中的Activity没有main()函数.我们无法决定Activity的创建和销毁过程,Activiy的创建和销毁(即生命周期)由系统完毕,系统会在Activity的 ...
- Android关于Activity生命周期详解
子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精 ...
随机推荐
- HTML5小知识
1.HTML5一种“妥协的”语法 2.特点: 标签不区分大小写 元素可以省略结束标签 元素属性可以省略属性值 属性的属性值可以不适用引号
- WM学习之——火山
效果图 节点图如下: 说明: Radial grad--锥形建立节点 Perlin Noise--基础地形创建节点 Combiner--联合节点 Clamp--范围/高度控制节点 Bias/Gain- ...
- Loadrunner 监控 Linux (centos6.5)服务器系统资源
Loadrunner 监控 Linux 服务器系统资源,需要在被监控的服务器上启用 rstatd 进程但尝试启动时,爆炸了: [root@test1 rpc.rstatd-4.0.1]# rpc.rs ...
- 【机器学习】聚类算法——K均值算法(k-means)
一.聚类 1.基于划分的聚类:k-means.k-medoids(每个类别找一个样本来代表).Clarans 2.基于层次的聚类:(1)自底向上的凝聚方法,比如Agnes (2)自上而下的分裂方法,比 ...
- 使用IDEA编译netty4
本来计划一天一篇博文的,结果周末加班加的不亦乐乎,对整个项目重构添加国际化的功能,不停的使用native2ascii工具 使用IDEA编译原有的netty4要报错,我修改了下pom.xml,编译成功了 ...
- ES Docs-2:Exploring ES cluster
The REST API Now that we have our node (and cluster) up and running, the next step is to understand ...
- 阿里云 Ubuntu 服务器 安装 pymssql
我是按照官方的说明文档: http://www.pymssql.org/en/stable/intro.html#getting-started 一步一步操作的,但是没有成功,在网上搜索了很多信息,最 ...
- VS(Visual Studio)中快速找出含中文的字符串
环境:visual studio 2017 1.ctrl + shift + f 打卡全局查找 2.输入(".*[\u4E00-\u9FA5]+)|([\u4E00-\u9FA5]+.*&q ...
- Mathematics Base - 期望、方差、协方差、相关系数总结
参考:<深度学习500问> 期望 在概率论和统计学中,数学期望(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和.它反映随机变量平均取值的大小. 线性运算: \(E(ax+ ...
- 【并发编程】Future模式添加Callback及Promise 模式
Future Future是Java5增加的类,它用来描述一个异步计算的结果.你可以使用 isDone 方法检查计算是否完成,或者使用 get 方法阻塞住调用线程,直到计算完成返回结果.你也可以使用 ...