Android 学习手札(二) 活动(Activity)组件
1.建立和配置Activity
建立Android工程时已经自动生成了一个默认的Activity,同时也生成了很多与Activity相关的文件,例如,res目录中的XML及图像文件、AndroidManifest.xml文件。虽然系统会为则合格默认的Activity自动生成所有必须的资源,但当假如新的Activity时,有很多内容需要开发人员手工进行配置。
每一个Activity都会对应AndroidManifest.xml文件中的一个<activity>标签。在<activity>标签中有一个必选的属性:android:name,该属性需要指定一个Activity类的子类。
· 指定完全的类名(packagename+classname)。
· 只指定类名。该类所在的包名需要在<manifest>标签的package属性中指定。
· 指定相对类名,只是<activity>标签的android:name属性中不仅指定类名,还有部分包名。
<activity>标签除了有android:name属性外,还有很多可选的属性。比较常用的有android:label和android:icon。
· android:label 属性可以指定一个字符串或资源ID,应用程序中有很多地方都会使用android:label属性值,例如,在Android手机的应用程序列表中程序图标下方的文字;如果未使用setTitle方法色沪指Activity的标题,系统会将android:label属性值座位Activity的默认标题。如果<activity>标签未指定android:label属性,系统会使用<application>标签的android:label属性值,也就是说<application>标签的android:label属性值是<activity>标签中的android:label属性的默认值。
· android:icon 属性必须指定一个图像资源ID,这个资源ID所制定的图像将作为应用程序列表中的程序图标。如果未指定<activity>标签的android:icon属性,系统会使用<application>标签的android:icon属性来代替。
在<activity>标签中还需要一个<intent-filter>自标签来配置Activity的特性。在<intent-filter>标签中比较常用的有两个子标签:<action>和<category>,这两个标签只有一个<android:name>属性。
· <action>标签的android:name 属性用户指定Activity 所接收的动作。例如,ACTION_MAIN 常量的值是 android.intent.action.MAIN, <action> 标签的android:name属性值就可以指定为 android.intent.action.MAIN。如果指定该值,标识当前的Activity是Android应用程序的入口,也就是第一个启动的Activity(虽然Android应用程序没有Main函数,但仍然需要指定一个入口才可以运行)。
· <category>标签的android:name 属性用于设置Activity的种类。如果<category>标签的android:name 属性值是 android.intent.category.LAUNCHER, 标识当前的Activity将被显示在Android系统的最顶层。
在Activity类中有什多方法可以获得、设置某些信息,或进行某些操作,例如,getTitle和setTitle方法分别用来获得和设置Activity的标题,finish方法用来关闭Activity。
2.Activity的生命周期
在Activity从建立到销毁的过程中需要在不同的阶段调用7个生命周期方法。
· protected void onCreate(Bundle savedInstanceState)
· protected void onStart()
· protected void onResume()
· protected void onPause()
· protected void onStop()
· protected void onRestart()
· protected void onDestroy()
上面7个生命周期方法分别在4个阶段按一定的顺序进行调用:
· 开始Activity:在这个阶段一次执行3个生命周期方法——onCreate、onStart和onResume。
· Activity 失去焦点:如果在Activity获得焦点的情况下进入其他的Activity或应用程序,当前的Activity会失去焦点。在这一阶段会一次执行onPause和onStop方法。
· Activity重新获得焦点:如果Activity重新获得焦点,会一次执行3个生命周期方法——onRestart、onStart和onResume。
· 关闭Activity:当Activity呗关闭时系统会一次执行3个生命周期方法——onPause、onStop和onDestroy。
在执行的过程中可以改变系统的执行轨迹的生命周期方法是onPause和onStop。如果在执行onPause方法的过程中Activity重新获得了焦点,然后又失去了焦点。系统将不会再执行onStop方法,而是按照如下顺序执行相应的生命周期方法:
onPause -> onResume -> onPause
如果在执行onStop方法的过程中Activity重新获得了焦点,然后又失去了焦点。系统将不会执行onDestroy方法,而是按照如下顺序执行相应的生命周期方法:
onStop -> onRestart -> onStart -> onResume -> onPause -> onStop
因此,Activity有如下3种生命周期:
· 整体生命周期:onCreate -> ... -> onDestroy
· 可视生命周期:onStart -> ... -> onStop
· 焦点生命周期:onResume -> onPause

注意:由此可看出,系统子啊终止应用程序进程时会调用onPause、onStop和onDestroy方法。onPause方法排在最前面,也就是说,Activity在失去焦点时就可能被终止进程,而onStop和onDestroy方法可能没有机会执行。因此,应该在onPause方法中保存当前Activity状态,这样才能保证在任何时候终止进程时都可以执行保存Activity状态的代码。
Android 学习手札(二) 活动(Activity)组件的更多相关文章
- android学习笔记二、Activity深入学习
一.创建和使用: 1.Activity是android的四大组件之一,需要继承Activity并在清单文件中进行声明才能使用.没有声明则报错. 2.启动Activity是通过Intent,有两种方式: ...
- Android学习笔记二:activity的理解
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7513290.html 一:activity定义了app的页面 一个app有很多个页面组成,一个页面其实就是一个 ...
- 二、Android学习第二天——初识Activity(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 一. Android学习第二天——初识Activity 昨天程序搭建成功以 ...
- 三、Android学习第三天——Activity的布局初步介绍(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 三.Android学习第三天——Activity的布局初步介绍 今天总结下 ...
- Android学习笔记二之初始Activity
初识Activity,跟着教程学习敲了一遍这一章的内容,下面根据目录结构总结知识点: 一.活动是什么 上篇博文中我们提到了Android四大组件,其中有一个Activity,我们将之称为活动.活动是最 ...
- "浅谈Android"第二篇:活动(Activity)
距离上一篇文章,过去有半个多月了,在此期间忙于工作,疏于整理和总结,特此写下这篇博文,来谈谈自己对Activity的理解.总所周知,Activity组件在Android中的重要性不言而喻,我们 ...
- Android学习笔记1:Activity与View
推荐一系列优秀的Android开发源码 Activity是Android应用中负责与用户交互的组件. View组件是所有UI控件.容器控件的基类,View组件就是Android应用中用户实实在在看到的 ...
- [Android学习笔记4]四大应用组件之一:Service 上
一.什么是Service 一个Service就是一个能够在后台执行长时操作的应用程序组件,并且不提供用户界面.一个应用程序组件能够启动一个Service,即使用户切换到另一个应用程序,这个Servic ...
- Android学习笔记五:四大组件(转)
转自:http://blog.csdn.net/shenggaofei/article/details/52450668 Android四大组件分别为activity.service.content ...
随机推荐
- 低压差稳压器AMS1585
(1)高效线性稳压. (2)输出高达4.6A,最高输入电压15V,推荐最低压差1.5V(最低1.35V),最大压差12V. (3)两种封装:TO220(直插式),TO230(贴片). 典型电路如下图所 ...
- HDU 4727 The Number Off of FFF 2013年四川省赛题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4727 题目大意:队列里所有人进行报数,要找出报错的那个人 思路:,只要找出序列中与钱一个人的数字差不是 ...
- senrty 配置Email
测试页面在这里 右上角头像->管理->邮件 配置如下:(注意一点:465是SSL的 587是TLS的) 其他django email 1.3 文献在这里 现在都1.8了貌似 如 ...
- java 23 种设计模式
一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接 ...
- The equation - SGU 106(扩展欧几里得)
题目大意:有一个二元一次方程,给出系数值和x与y的取值范围,求出来总共有多少对整数解. 分析:有以下几点情况. 1,系数a=0, b=0, 当c != 0的时候结果很明显是无解,当c=0的时候x,y可 ...
- Abator自动生成ibatis的相关配置和类
一.abator自动生成配置: abator自动生成ibatis的配置文件.mode.sqlMap.dao.bean实例 准备: 1.安装Eclipse插件: 要求eclipse3.1, ...
- C#中HashTable的用法示例2
命名空间 System.Collections 名称 哈希表(Hashtable) 描述 用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写:value用 ...
- Python中逗号作用的实例分析
逗号在类型转化中的使用 主要是元组的转换 例如: >>> a=11>>> b=(a)>>> b11>>> b=(a,)>& ...
- Hibernate自定查询返回list<?>
/** * * @param session * :一个会话 * * @param hql * :是需要执行的hql语句, * * @param offset * 设置开始位置 * * @param ...
- 【Android - 框架】之Retrofit的使用
Retrofit是Square公司发布的一个可以应用在Android和Java中的Http客户端访问框架,其底层应用的是OkHttp. 在这个帖子中,我们以下面这个Http请求为例: https:// ...