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  应用程序上下文  目标组件



1. Intent intent = new Intent(IntentDemo01Activity.this,  
2. class);  
3. //显示启动Activity  
4. startActivity(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)

                                                                          二是通过Intenet Filter过滤指定。(隐式的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主要用来传递参数。