1、Activity是Android四大组件(Application Components)之一,
简单来说Activity就是平常所见到的用户界面, 一般情况下,一个Activity所占的窗口是满屏的,但也可以是一个小的位于其它Activity之上的浮动窗口。一个Android工程至少有一个Activity,Activity上面可布有多个view的实例,如文本框、进度条、复选框、按钮等等。多个Activity之间通过Intent来实现跳转。
注:每新建一个activity,就要继承(extends)Activity类,复写onCreate(bundle)方法,然后绑定此activity的布局文件XML
1. public class secondactivity extends Activity {
2.
3. @Override
4. protected void onCreate(Bundle savedInstanceState) {
5. // TODO Auto-generated method stub
6. super.onCreate(savedInstanceState);
7. //绑定布局文件
8. }
9.
10.
11. }
最后还必须在AndroidManifest.xml里面注册这个新增加的activity
1. <activity
2. android:label="second"
3. android:name=".secondactivity" >
4. </activity>
2、下面为Activity的继承关系,可见Activity继承与Contex类。
3、Activity的生命周期
其生命周期有如下几种
onCreate()、onRestart()、onStart()、onResume()、onPause()、onStop()、onDestroy()
注:
一般更新activity,要复写onResume(),然后在里面写更新的处理方法。
onpause方法与onstop方法的区别。
如果第二个activity没有完全遮挡住第一个activity时,如第二个activity是对话框形式到时候。就只调用第一个activity的onpause方法。
当第二个对话框完全遮挡住第一个对话框到时候,即第二个Activity是满屏状态,就会调用第一个Activity的onpause和onstop方法。
另外关于onsume方法,只用来获取用户焦点的(其实就是鼠标点击或者拖动之类的),即当前Activity处于激活状态。
1. //第一个activity启动第二个activity的顺序
2.
3. first activity
4. --onpause
5. second activity
6. --oncreate
7. --onstart
8. --onresume
9. firsr activity
10. --onstop//满屏状态
11. //--退掉第二个activity的顺序,接上面
12. second activity
13. --onpause
14. first activity
15. --onrestart----------------->和oncreate差不多
16. --onstart
17. --onresume
18. second activity
19. --onstop
20. --ondestroy
4、Activity之间的跳转与intent、Bundle
4.1 intent
类层次结构图:
什么是Intent?
Intent是一个动作的完整描述,包含了动作的产生组件、接收组件和传递的数据信息。可以理解为它是一个信使。当然,也可以将Intent视为一个在不同组件之间仁慈的消息,这个消息在到达接收组件后,接收组件会执行相关的操作。它使得Android系统中互相独立的应用程序组件,成为一个可以互相通信的组件组件集合。因此,无论这些组件是否在同一个应用程序中,Intent 可以将一个组件的数据和动作仁慈给另一个组件
主要常见的用途:1、启动Activity和Service 2、在Android系统上发布广播消息
理解Intent的关键之一是理解清楚Intent的两种基本用法: 一种是显式的Intent,即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似,只是复用的粒度有所差别;
显示启动:必须指明启动的Activity所在的类 // 创建一个Intent 应用程序上下文 目标组件
另一种是隐式的Intent,即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁, 这种方式与函数调用差别比较大,有利于降低发送者和接收者之间的耦合。 另外Intent 除了发送外,还可用于广播(广播当然是隐式intent),这些都将在后文进行详细讲述。 (隐式的intent通过AndroidMainfest.xml中的intent-filter来工作) 是通过Intenet Filter过滤指定。
隐式启动:由Android系统根据Intent的动作和数据来决定启动哪一个Activity,只包含需要执行的动作和所包含的数据,(intent-filter) 无需指明具体哪一个Activity
|
1、 Intent:Android 组件的信使,它可以启动Activity,也可以启动Service,还可以发起一个广播Broadcast。 2、 Intent由以下几部分组成:动作Action、数据Data、分类Category、类型Type、组件Component、 扩展信息Extra,通过这些可以启动其它组件并携带信息。 Intent的几种用法: http://www.eoeandroid.com/thread-266-1-1.html 3、 Intent在寻找目标组件的时候有两种方式:一是通过组件名称直接指定,(显示的intent) 1) Intent的Component属性: Component可以用来查找组件,我们可以根据setComponent()、setClass()、setClassName()来设置组件的名称。 通过getComponet(ComponetName componetName)来获取组件 2) Intent的Action属性: Action是指Intent是指一个要完成的动作,是一个字符串常量。在Intent类里面定义了大师的Action的常量属性, 例如:ACTION_CALL (打电话) ACTION_EDIT(编辑数据) ACTION_VIEW等等, 除此之外,我们可以使用setAction()函数来设置IntnetAction属性,使用getAction()来获得Action 自定义Action 访问系统Action属性: 3) Intent的Data属性:是执行动作的URI和MIME类型,不同的Action有不同的Data数据指定 4) Intent的Category属性:执行Action中的附加信息 CATEGORY_LAUNCHER:加载程序时,Activity出现在最上面 CATEGORY_HOME:回到Home界面 5) Intent的Extras属性:添加一些组件的附加信息 系统标准Activity Action应用:打电话、访问浏览器和地图、发邮件 |
4.2 其实Bundle就是一个Map,下面是Bundle的构造方法:
public Bundle() {
mMap = new HashMap<String, Object>();
mClassLoader = getClass().getClassLoader();
}其中一个方法:
public void putCharSequence(String key, CharSequence value) {
unparcel();
mMap.put(key, value);
}Bunddle主要用来传递参数。
















