天天看點

Android學習筆記之Intent

Intent中文意思:意圖

Intent是各元件溝通的橋梁,在Android中非常的重要

Inten可以啟動的大緻分為三種:Activity(界面),Service(服務),Broadcasts(廣播)

    啟動界面:StartActivity(),StartActivityForResult();

    啟動服務:StartService(),BindService()

    發送廣播:SendBroadcasts()

Intent分為顯式意圖和隐式意圖兩種

    顯式意圖:需要明确指明打開的元件

    隐式意圖:沒有明确指明打開的元件

意圖的屬性有:

顯示意圖:component

隐士意圖:action,category,data ,type ,extras,flags

Intent主要有以下四個重要屬性,它們分别為:

    Action:Action屬性的值為一個字元串,它代表了系統中已經定義了一系列常用的動作。通過setAction()方法或在清單檔案AndroidManifest.xml中設定。預設為:DEFAULT。

    Data:Data通常是URI格式定義的操作資料。例如:tel:// 。通過setData()方法設定。

    Category:Category屬性用于指定目前動作(Action)被執行的環境。通過addCategory()方法或在清單檔案AndroidManifest.xml中設定。預設為:CATEGORY_DEFAULT。

    Extras:Extras屬性主要用于傳遞目标元件所需要的額外的資料。通過putExtras()方法設定。

    Action:動作-----------Intent要完成的動作----需要的類型為:字元串

     //示例代碼如下:
      Intent intent = new Intent();
      intent.setAction("com.cpc.www");
      startActivity(intent);      

    Category:Action動作的附加資訊

    使用過濾器來指定IntentFilter接收的類型

    隻有當Intent請求中所有的Category與元件中某一個IntentFilter的<category>完全比對時,才會讓該 Intent請求通過測試,IntentFilter中多餘的<category>聲明并不會導緻比對失敗。

flags:

    1)standard:預設模式,當要啟動目前界面時,會建立一個棧,管理Activity,建立Activity執行個體添加到棧

    2)singleTop:棧頂單執行個體

        a.如果目标界面在棧中時,建立新的Activity對象

        b.如果目标界面在棧頂,不會建立新的Activity對象

    3)singleTask:棧中單執行個體

        a.如果目标界面不存在棧中時,建立新的Activity對象

        b.如果棧中已經存在目标界面,清除棧中之前的Acticity,把目标界面放到棧頂

    4)singleInstance:全局單執行個體

        注意:設定某一個Activity singleInstance,此時,如果需要加載Activity,會另外建立一個棧管理這個Activity

        a.如果棧中不存Acticity,建立新的Activity對象

        b.如果在棧中已經存在Activity,則将已經存在的Acticity移到棧頂

    flags

        Intent.FLAG_ACTIVITY_NEW_TASK  類似于standard

        Intent.FLAG_ACTIVITY_CLEAR_TOP 類似于singleTask

        Intent.FLAG_ACTIVITY_SINGLE_TOP 類似于singleTop