文档章节

Android Activity生命周期

QGlaunch
 QGlaunch
发布于 2015/06/17 16:48
字数 668
阅读 59
收藏 1
点赞 1
评论 0
分十种情况讨论

第一,正常启动Activity A,输出结果如下:

第二,从ActivityA跳到ActivityB,并且ActivityB全屏。即ActivityA被ActivityB完全完全覆盖,输出结果如下:

第三,在第二种的情况下,从ActivityB返回到ActivityA,输出结果如下:

第四,从ActivityA跳到ActivityB,并且ActivityB非全屏。即ActivityA没有被ActivityB完全完全覆盖,输出结果如下:

第五,在第四种的情况下,从ActivityB返回到ActivityA,输出结果如下: 

第六,在第一种情况下,点击home键,输出结果如下:

第七,在第六种的情况下,长按home键盘,从任务管理器中调出ActivityA,输出结果如下:

第八,在第一种情况下,点击电源键,输出结果如下:

第九,在第八种的情况下,在打开电源键回到ActivityA,输出结果如下:

第十,退出ActivityA,输出结果如下:

          在对上述十种情况讨论完,可能觉得有点复杂,其实一点都不复杂,在梳理一下。首先最容易发现的是onCreate和onDestroy从头到尾都只执行了一次。onCreate在一个活动最先开始启动的时候执行了一次,onDestroy在活动结束关闭的时候执行了一次。另外可以发现除了在第四五两种情况下,其余情形的结果都相同,离开活动A,则A一次执行onPause和onStop,并且返回A的时候,一次执行onRestart、onStart和onResume。于是可以得出如下结论。只要不是在A进入到非全屏的其它活动中,则A执行onPause和onStop,反之只执行一个onPause,从其它活动返回,A执行onRestart、onStart和onResume,反之执行onResume。

          在测试四五两种情况的时候,只要在AndroidManifest.xml中队ActivityB的节点中添加如下一行代码:

          android:theme="@android :style/Theme.Dialog"

附活动ActivityA代码:

[java] view plaincopy

  1. package com.yuxianglong.view;  

  2.   

  3. import android.app.Activity;  

  4. import android.content.Intent;  

  5. import android.os.Bundle;  

  6. import android.util.Log;  

  7. import android.view.View;  

  8. import android.widget.Button;  

  9.   

  10. /** 

  11.  *  

  12.  * @ClassName: ActivityA 

  13.  * @Description: 对Activity生命周期的测试,重载了onCreate,onStart,onResume, 

  14.  *               onStop,onPause 

  15.  *               onDestroy,onRestart七个方法 

  16.  * @author yuxianglong 

  17.  * @date 2013-7-9 上午9:09:22 

  18.  *  

  19.  */  

  20. public class ActivityA extends Activity {  

  21.   

  22.     private Button button;  

  23.     private String Tag = "yuxlong2010";  

  24.   

  25.     @Override  

  26.     protected void onCreate(Bundle savedInstanceState) {  

  27.         super.onCreate(savedInstanceState);  

  28.         Log.d(Tag, "I'm  onCreate");  

  29.         setContentView(R.layout.activity_a);  

  30.         button = (Button) findViewById(R.id.button);  

  31.         button.setOnClickListener(new View.OnClickListener() {  

  32.               

  33.             @Override  

  34.             public void onClick(View v) {  

  35.                 // TODO Auto-generated method stub  

  36.                 startActivity(new Intent(ActivityA.this,ActivityB.class));  

  37.             }  

  38.         });  

  39.     }  

  40.   

  41.     @Override  

  42.     protected void onStart() {  

  43.         // TODO Auto-generated method stub  

  44.         super.onStart();  

  45.         Log.d(Tag, "I'm  onStart");  

  46.     }  

  47.   

  48.     @Override  

  49.     protected void onResume() {  

  50.         // TODO Auto-generated method stub  

  51.         super.onResume();  

  52.         Log.d(Tag, "I'm  onResume");  

  53.     }  

  54.   

  55.     @Override  

  56.     protected void onStop() {  

  57.         // TODO Auto-generated method stub  

  58.         super.onStop();  

  59.         Log.d(Tag, "I'm  onStop");  

  60.     }  

  61.   

  62.     @Override  

  63.     protected void onDestroy() {  

  64.         // TODO Auto-generated method stub  

  65.         super.onDestroy();  

  66.         Log.d(Tag, "I'm  onDestroy");  

  67.     }  

  68.   

  69.     @Override  

  70.     protected void onRestart() {  

  71.         // TODO Auto-generated method stub  

  72.         super.onRestart();  

  73.         Log.d(Tag, "I'm  onRestart");  

  74.     }  

  75.   

  76.     @Override  

  77.     protected void onPause() {  

  78.         // TODO Auto-generated method stub  

  79.         super.onPause();  

  80.         Log.d(Tag, "I'm  onPause");  

  81.     }  

  82. }  


本文转载自:http://blog.csdn.net/yuxlong2010/article/details/9278155

共有 人打赏支持
QGlaunch
粉丝 4
博文 59
码字总数 11843
作品 0
朝阳

暂无相关文章

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 29分钟前 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 56分钟前 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

容器之查看minikue的environment——minikube的环境信息

执行如下命令 mjduan@mjduandeMacBook-Pro:~/Docker % minikube docker-envexport DOCKER_TLS_VERIFY="1"export DOCKER_HOST="tcp://192.168.99.100:2376"export DOCKER_CERT_PATH="/U......

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部