创建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. Java String Split Method

    Java String.split() method 有如下几种特殊情况: 1. 分隔符出现在首尾 public static void main(String args[]) { String St ...

  2. expect 切换用户

    安装expect yum install expect -y #!/bin/expect -f spawn su - expect "Password:" send "n ...

  3. 使用sort&awk实现文件内容块排序

    源文件为: [root@luo5 wangxx]# cat -v luo.txt J LuoSoutth jfsaNanjing,china Y ZhangVictory UniversityNejf ...

  4. [转]Cache-Control max-age=0

    Cache-Control max-age=0   Cache-Control  no-cache — 强制每次请求直接发送给源服务器,而不经过本地缓存版本的校验.这对于需要确认认证应用很有用(可以和 ...

  5. bzoj 3527 [Zjoi2014]力——FFT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3527 把 q[ i ] 除掉.设 g[ i ] = i^2 ,有一半的式子就变成卷积了:另一 ...

  6. MySQL的瑞士军刀(转)

    这里主要讲mysql运维中的一些主要工具,这些工具可能大家都用过,特别是系统管理员或者做linux服务器维护的同学可能都知道这些小工具,这 里讲得会比较多一些,除了系统监控的小工具,还包括一些mysq ...

  7. linux下面的df命令

    linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息. 1.命令格式: df [选项] [文件] 2.命 ...

  8. Canvas 与 SVG 的比较

    Canvas:<canvas> 标签定义图形(只是图形容器),比如图表和其他图像,您必须使用脚本 (通常是JavaScript)来绘制图形.默认情况下 <canvas> 元素没 ...

  9. spring--AOP--权限---demo1---bai

    AOP权限DEMO1: 实体类: package com.etc.entity; import org.aspectj.lang.annotation.Pointcut; public class U ...

  10. Python多进程-进程间数据的共享

    不同的进程不能同时修改一份数据,但是不同的进程能对一份数据进行修改 可通过Manager来实现进程间的数据共享 # -*- coding:utf-8 -*- __author__ = "Mu ...