创建Activity

要创建一个新的Activity,需要对Activity类进行扩展,在新类定义用户界面并实现新的功能。

视图是用来显示数据和提高用户交互的Ui控件。Android提供了多个布局类,称为ViewGroup,它可以包含多个视图来帮助布局UI。Fragment用来封装UI的各个部分,从而能够方便地创建动态界面。

Activity需要在Manifest中对其进行注册。在Manifest的application节点内添加新的activity标签;activity标签包含像标签、图标、必需的权限以及Activity所使用的主体这样的元数据的属性。

在activity标签中,可以添加intent-filter节点来指定能够用来启动该Activity的Intent。

Activity的生存期

Android应用程序不能控制它们自己的进程的生存期;而Android运行时可以管理每一个应用程序的进程,也就是说,它也可以管理进程内的每个Activity

1.Activity 栈

每一个Activity的状态是由它在Activity栈中所处的位置所决定的,Activity栈是当前所有正在运行的Activity的后进先出的集合。


 

2.Activity 的状态

活动状态:位于栈顶的时候,可见的、具有焦点的前台Activity,这时它可以接收用户输入。

暂停状态:可见的,但没有获得焦点。不能接受用户的输入事件

停止状态:不可见的时候。Activity仍然会停留在内存中,保存所有的状态信息,然而当系统的其他地方要求使用内存的时候,他们就会成为被终止的首要候选对象。

非活动状态:一个Activity被终止之后,在启动之前它就处于非活动状态。处于非活动状态的Activity已经从Activity栈中移除了。

状态转化是非确定性的,完全由Android内存管理器处理。Android首先会关闭包含非活动状态Activity的应用程序,接着会关闭那些停止的应用程序。

3.监控状态改变

保证Activity可以对状态改变做出反应,Android提供了一     系列事件处理程序,当Activity在完整的、可见的和活动的生存期之间转化时,它们就会被触发。

4.理解Activity的生存期

完整生存期:onCreate方法的第一次调用和对onDestory方法的最后一次调用之间的时间范围

可见生存期:onStart和onStop之间的那段时间。

活动生存期:onResume以及对应的onPause之间的那段时间

Android Activity 类

Android SDK 包含了一些Activity子类来封装对常用的用户界面Widget的使用。下面列出了一些比较有用的Activity子类。

MapActivity  在一个Activity中封装了支持MapViewWidget所有求的资源处理

ListActivity Activity包装类,它将一个ListView绑定到了一个数据源,从而作为主Ui元素,并提供了列表项选择的事件处理程序

ExpandableListActivity 与ListActivity类似,但是它支持ExpandableListView

【Android4高级编程笔记】深入探讨Android Activity的更多相关文章

  1. Android高级编程笔记(四)深入探讨Activity(转)

    在应用程序中至少包含一个用来处理应用程序的主UI功能的主界面屏幕.这个主界面一般由多个Fragment组成,并由一组次要Activity支持.要在屏幕之间切换,就必须要启动一个新的Activity.一 ...

  2. UNIX环境高级编程笔记之文件I/O

    一.总结 在写之前,先唠几句,<UNIX环境高级编程>,简称APUE,这本书简直是本神书,像我这种小白,基本上每看完一章都是“哇”这种很吃惊的表情.其实大概三年前,那会大三,我就买了这本书 ...

  3. javascript高级编程笔记01(基本概念)

    1.在html中使用JavaScript 1.  <script> 元素 <script>定义了下列6个属性: async:可选,异步下载外部脚本文件. charset:可选, ...

  4. C#高级编程笔记之第三章:对象和类型

    类和结构的区别 类成员 匿名类型 结构 弱引用 部分类 Object类,其他类都从该类派生而来 扩展方法 3.2 类和结构 类与结构的区别是它们在内存中的存储方式.访问方式(类似存储在堆上的引用类型, ...

  5. C#高级编程笔记之第二章:核心C#

    变量的初始化和作用域 C#的预定义数据类型 流控制 枚举 名称空间 预处理命令 C#编程的推荐规则和约定 变量的初始化和作用域 初始化 C#有两个方法可以一确保变量在使用前进行了初始化: 变量是字段, ...

  6. C#高级编程笔记 (6至10章节)运算符/委托/字符/正则/集合

    数学的复习,4^-2即是1/4/4的意思, 4^2是1*2*2的意思,而10^-2为0.01! 7.2运算符 符号 说明 例   ++ 操作数加1 int i=3; j=i++; 运算后i的值为4,j ...

  7. Java基础知识强化之网络编程笔记24:Android网络通信之 AndroidAsync(基于nio的异步通信库)

    1. AndroidAsync   AndroidAsync 是一个基于nio的异步socket ,http(客户端服务器端),websocket,socket.io库,AndroidAsync 是一 ...

  8. Java基础知识强化之网络编程笔记23:Android网络通信之 Volley(Google开源网络通信库)

    联合网上资料学习:http://www.open-open.com/lib/view/open1451223702339.html 一.Volley的介绍 1. Volley简介 在这之前,我们在程序 ...

  9. Java基础知识强化之网络编程笔记22:Android网络通信之 Android常用OAuth登录(获取个人信息)

    1. 获取百度个人信息(使用Gson解析): 2. 代码案例: (1)工程一览图,如下: (2)activity_main.xml: <LinearLayout xmlns:android=&q ...

随机推荐

  1. SVN客户端与服务器端搭建

    一.客户端安装 1.点击安装程序 2.修改svn安装位置 3.开始安装 4.安装完成 5.回到左面  右键出现svn检出 tortoiSVN  表示安装成功  二.SVN服务端安装 1.点击服务端安装 ...

  2. C++中rand()函数的用法

    1.rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数. 2.如果你要产生0~99这100个整数中的一个随机整数,可以表达为:int num = r ...

  3. Inception-Resnet-V2

    零.Inception-Resnet-V2的网络模型 整体结构如下,整体设计简洁直观: 其中的stem部分网络结构如下,inception设计,并且conv也使用了7*1+1*7这种优化形式: inc ...

  4. css3 flex布局/grid布局

    1.CSS3 Flexbox 布局完全指南(图解 Flexbox 布局详细教程) 2.CSS Grid 布局完全指南(图解 Grid 详细教程)

  5. MLCC 电容的的 NP0 C0G 材质

    MLCC 电容的的 NP0 C0G 材质 随手记一下. MLCC 中最稳定的材质 NP0 C0G,NP0 和 C0G 是相同的,只是不同的产商不同的名字而已. 注意中间的是 0 不是 英文字母 O,虽 ...

  6. centOS5.5 配置vnc,开启linux远程桌面

    如何远程控制centOS桌面? 如何使用windows远程控制centOS桌面? 1.查看本机是否有安装vnc(centOS5默认有安装vnc) rpm -q vnc vnc-server 如果显示结 ...

  7. UOJ #55 & 洛谷 P3920 紫荆花之恋 —— 动态点分治+替罪羊树

    题目:http://uoj.ac/problem/55 https://www.luogu.org/problemnew/show/P3920 参考博客:https://www.cnblogs.com ...

  8. springboot启动异常:java.lang.IllegalArgumentException: Could not resolve placeholder 'xxx.xxx.xxx' in value "${xxx.xxx.xxx}"

    场景: 本地启动正常,部署到服务器上启动时启动tomcat失败,显示上面的问题. 原因: 本地打包的时候没有修改指定的配置文件名称(本地只有一份配置文件). 在打包到服务器上时指定的配置文件命名会去查 ...

  9. 编译cef 2526

    fetch --nohooks chromium cd /path/to/chromium/src# git checkout -b 51.0.2704.103 refs/tags/51.0.2704 ...

  10. oracle的自增长

    mysql的自增长非常容易,一个 AUTO_INCREMENT 就搞定,可是oracle就不行了 下面是oracle的自增长 #创建一个表CREATE TABLE T_TEST_DEPARTMENTS ...