【Android4高级编程笔记】深入探讨Android Activity
创建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的更多相关文章
- Android高级编程笔记(四)深入探讨Activity(转)
在应用程序中至少包含一个用来处理应用程序的主UI功能的主界面屏幕.这个主界面一般由多个Fragment组成,并由一组次要Activity支持.要在屏幕之间切换,就必须要启动一个新的Activity.一 ...
- UNIX环境高级编程笔记之文件I/O
一.总结 在写之前,先唠几句,<UNIX环境高级编程>,简称APUE,这本书简直是本神书,像我这种小白,基本上每看完一章都是“哇”这种很吃惊的表情.其实大概三年前,那会大三,我就买了这本书 ...
- javascript高级编程笔记01(基本概念)
1.在html中使用JavaScript 1. <script> 元素 <script>定义了下列6个属性: async:可选,异步下载外部脚本文件. charset:可选, ...
- C#高级编程笔记之第三章:对象和类型
类和结构的区别 类成员 匿名类型 结构 弱引用 部分类 Object类,其他类都从该类派生而来 扩展方法 3.2 类和结构 类与结构的区别是它们在内存中的存储方式.访问方式(类似存储在堆上的引用类型, ...
- C#高级编程笔记之第二章:核心C#
变量的初始化和作用域 C#的预定义数据类型 流控制 枚举 名称空间 预处理命令 C#编程的推荐规则和约定 变量的初始化和作用域 初始化 C#有两个方法可以一确保变量在使用前进行了初始化: 变量是字段, ...
- 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 ...
- Java基础知识强化之网络编程笔记24:Android网络通信之 AndroidAsync(基于nio的异步通信库)
1. AndroidAsync AndroidAsync 是一个基于nio的异步socket ,http(客户端服务器端),websocket,socket.io库,AndroidAsync 是一 ...
- Java基础知识强化之网络编程笔记23:Android网络通信之 Volley(Google开源网络通信库)
联合网上资料学习:http://www.open-open.com/lib/view/open1451223702339.html 一.Volley的介绍 1. Volley简介 在这之前,我们在程序 ...
- Java基础知识强化之网络编程笔记22:Android网络通信之 Android常用OAuth登录(获取个人信息)
1. 获取百度个人信息(使用Gson解析): 2. 代码案例: (1)工程一览图,如下: (2)activity_main.xml: <LinearLayout xmlns:android=&q ...
随机推荐
- 如果两个人,两台电脑同时登录同一个帐号,同时对同一个账单提交,账单同时被服务器处理,那服务器应该先处理谁的,或者怎么规避这个问题。 非单点登录,重定向,stoken拦截器的问题
方法一:给用户设置个状态 服务器端坐标记,比如数据库中增加一列,标识是否登陆,登录时先判断这个就行了,不过要考虑非正常退出的情况 http 方法二:在用户表里面 多加一个状态字段,登录成功 改变状态 ...
- WPF之ContextMenu的命定绑定
在WPF中右击菜单项的XMAL代码是: <ContextMenu x:Key="sampleContextMenu"> <MenuItem Header=&quo ...
- ODP.NET OracleBulkCopy
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Oracle.DataA ...
- 使用case语句给字体改变颜色
使用case语句给字体改变颜色 #!/bin/bash color(){ RED_COLOR='\E[1;31m' GREEN_COLOR='\E[1;32m' YELLOW_COLOR='\E[1; ...
- Poj 3287 Catch That Cow(BFS)
Description Farmer John has been informed of the location of a fugitive cow and wants to catch her i ...
- PostgreSQL 备份和恢复
备份和恢复有三种不同的基本方法来备份PostgreSQL数据SQL转储文件系统级备份File system level backup连续归档 1. SQL转储 pg_dump dbname > ...
- Python数据库(一)-Mysql数据库的连接
首先需要安装pymysql模块 然后用pymysql连接mysql并执行命令来查看数据 连接mysql数据库后需要创建游标来执行SQL语句 # -*- coding:utf-8 -*- __autho ...
- MessageBox如何输出整数
int cx=10;CString s;s.Format(_T("整数是:%d"),cx);MessageBox(s);
- SetConsoleCtrlHandler演示
#include "stdafx.h"#include <Windows.h> static BOOL WINAPI Handler(DWORD cntrlEvent) ...
- leetcode458
原本没有思路,参考了网上的解题思路,自己独立完成了代码. int poorPigs(int buckets, int minutesToDie, int minutesToTest) { ; ; wh ...