Android Activity学习笔记(一)
Activity为Android应用的四大组件之一,提供界面来与用户完成交互等操作。其中Activity的生命周期的知识这里做个笔记。
Activity的生命周期由以下几个部分组成:
1.onCreate :Activity Launch时调用,完成布局和资源的设置操作。
2.onStart :Activity开始可见,但是与用户之间不能交互(下面有例子说明)。
3.onResume :Activity可见,并且此时可以与用户完成交互操作。
4.onPause :Activity将不可见或则有其他如Dialog Activity在foreground时调用。
5.onStop :Activity完全不可见时调用,Activity进入后台。
6.onDestroy :Activity在后台,被finish or kill时调用。
7.onRestart :在onStop状态下重新变为可见时调用。
Activity的生命周期图如下图所示:

为了方便理解,写一段简单的代码来了解Activity的生命周期:
package com.example.steve.myfirstapp; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log; public class MainActivity extends AppCompatActivity {
private static final String TAG = "MyFirstApp";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//该布局文件中只有一个TextView,默认值为“Hello World!”
Log.d(TAG, "onCreate");
} @Override
protected void onRestart() {
Log.d(TAG, "onRestart");
super.onRestart();
} @Override
protected void onStart() {
Log.d(TAG,"onStart");
/*让进程sleep 5s
try {
Thread.currentThread().sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.d(TAG,"onStart Sleep 5s");
*/
super.onStart();
} @Override
protected void onResume() {
Log.d(TAG,"onResume");
super.onResume();
} @Override
protected void onPause(){
Log.d(TAG,"onPause");
super.onPause();
} @Override
protected void onStop(){
Log.d(TAG,"onStop");
super.onStop();
} @Override
protected void onDestroy() {
Log.d(TAG,"onDestroy");
super.onDestroy();
} }
实际操作过程中,当打开Android应用时,MainActivity会经过onCreate -> onStart -> onResume三个阶段,此时若按home键或则back按键,MainActivity会经过onPause -> onStop这两个阶段,再进入此MainActivity时,会再调用onRestart -> onStart -> onResume三个阶段。
通过Recent按键调出此Android应用后,再尝试清除该Android应用后,MainActivity最后会调用到onDestory阶段。
其中在onStart中有注释掉一段代码,这段代码主要是用来让主线程Sleep 5s,这个操作时用来理解上文所说“Activity可见,但是不可与用户交互”。
当打开Android应用时,MainActivity会以此进入onCreate -> onStart -> onResume阶段。当尝试在onStart阶段对主线程做delay操作时,此时Activity呈现的样子如下图:

此时Activity为可见状态,但是其无法与用户交互。当进入onResume阶段时,此时Activity显示的内容如下图所示:

此时,Activity不但可见,而且还可以与用户完成交互(如果在layout.xml文件里添加Button会更方便理解)。
参考文献:https://github.com/codepath/android_guides/wiki/Activity-Lifecycle
Android Activity学习笔记(一)的更多相关文章
- Android Activity学习笔记——Activity的启动和创建
http://www.cnblogs.com/bastard/archive/2012/04/07/2436262.html 最近学习Android相关知识,感觉仅仅了解Activity几个生命周期函 ...
- Android自动化学习笔记:编写MonkeyRunner脚本的几种方式
---------------------------------------------------------------------------------------------------- ...
- Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例
---------------------------------------------------------------------------------------------------- ...
- Android动画学习笔记-Android Animation
Android动画学习笔记-Android Animation 3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...
- Android:日常学习笔记(9)———探究持久化技术
Android:日常学习笔记(9)———探究持久化技术 引入持久化技术 什么是持久化技术 持久化技术就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失 ...
- Android:日常学习笔记(8)———探究UI开发(3)
Android:日常学习笔记(8)———探究UI开发(3) 详解四种基本布局 前言 布局定义用户界面的视觉结构,如Activity或应用小部件的 UI.您可以通过两种方式声明布局: 在 XML 中声明 ...
- Android:日常学习笔记(7)———探究UI开发(1)
Android:日常学习笔记(7)———探究UI开发(1) 常用控件的使用方法 TextView 说明:TextView是安卓中最为简单的一个控件,常用来在界面上显示一段文本信息. 代码: <T ...
- Android:日常学习笔记(6)——探究活动(4)
Android:日常学习笔记(6)——探究活动(4) 活动的启动模式 standard模式 standard是活动默认的启动模式,在不进行显示定义的情况下,所有活动都会自动使用这种启动模式. stan ...
- Android:日常学习笔记(6)——探究活动(3)
Android:日常学习笔记(6)——探究活动(3) 活动的生命周期 返回栈 Android中的活动是可以叠加的,我们每启动一个新活动,就会覆盖在原来的活动上,点击Back以后销毁最上面的活动,下面的 ...
随机推荐
- Android Touch(1)事件的传递流程(*)
1,Activity,ViewGroup,View的关系 2,触摸事件 3,传递事件时的重要函数 4,事件传递流程参考图 5,其它参考资料 1,Activity,ViewGroup,View的关系 本 ...
- html5 audio音频播放全解析
序 html5开启了一个新时代,因为它让浏览器本身变得不那么被动,audio api就是一个典型的列子,在html5还没确定之前,如果想要在网页上听音乐看视频唯一的办法就是用flash意思是当你没有给 ...
- HDU 4664 Triangulation(SG函数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4664 题意:给出一个n个点的凸包(不存在三点共线).每次可以选择两个点连线,但是任意两条线只能在顶点处 ...
- leetcode:Rectangle Area
Find the total area covered by two rectilinear rectangles in a 2D plane. Each rectangle is defined b ...
- 深入.NET平台和C#编程 错题录
1.在C#中,关于文件操作相关的类说法正确的是(AB) <选择二项> A:FileInfo类提供了用于操作文件的实例方法 B:File类提供了用于操作文件的静态方法 C:Directory ...
- 13.Object-C--浅谈Foundation框架常用的结构体
------- android培训.iOS培训.期待与您交流! ---------- 昨天学习了Foundation框架中常用的结构体,下面我简单的总结一下,如果错误麻烦请留言指正,谢谢! Found ...
- 内核打上yaffs2补丁遇到的问题
移植yaffs2文件系统时,首先要在内核中添加对yaffs2的支持,使用命令:./patch-ker.sh c 内核目录时,出现下面错误: usage: ./patch-ker.sh c/l m/ ...
- 甚是挂念学校的acmer
虽然自己一直不承认.. 今天头疼,不想工作,况且自己服务端代码也写差不多了,于是又干起了自己的本行,去信息站找退役帖看,又把3xian的文章看了一遍,这次我从文章里面读到的更多的是懊恼,恨铁不成钢.经 ...
- spring的声明式事务内部图
- 朴素贝叶斯(Naive Bayes)
1.朴素贝叶斯模型 朴素贝叶斯分类器是一种有监督算法,并且是一种生成模型,简单易于实现,且效果也不错,需要注意,朴素贝叶斯是一种线性模型,他是是基于贝叶斯定理的算法,贝叶斯定理的形式如下: \[P(Y ...