1. 程式人生 > >Android 基礎知識——四大元件之Activity(二)

Android 基礎知識——四大元件之Activity(二)

今天我們來探討一下activity有什麼啟動模式,都有什麼特點呢,且看下面分析

1.Task以及back stack     >Task(任務)  為了完成一個功能  多個Activity的集合,     當你的應用程式啟動時 系統會自動建立Task用於管理Activity

    >Back stack:(回退棧)按照Activity啟動順序 後進先出     

2.Activity的啟動模式:(*******)     android:launchMode="standard"     >1,standard:預設模式  (拿來主義)   每次都會建立一個新的Activity(多次例項化)             android:launchMode="singleTop"     >2,singleTop(拒絕堆疊)         >1,沒有這個Activity 直接建立         >2,如果有 並且在棧頂  直接拿來使用 呼叫onNewIntent(Intent intent)方法         >3,如果有  沒有在棧頂  重新建立一個Activity例項              >3,singleTask:(獨立門戶)         >1,沒有Activity直接建立         >2,如果有 並且在棧頂  直接拿來使用  呼叫onNewIntent(Intent intent)方法         >3,如果有  沒有在棧頂  將在它上方的 Activity pop出去  自身有回到棧頂位置呼叫onNewIntent(Intent intent)方法

    >4,singleInstance (孤獨寂寞)(這個用法不多  浪費空間)         >系統會單獨分配一個stack  不允許其他的Activity和他共享一個stack 3.Intent的七大屬性

        跳轉:             1,顯示意圖跳轉:知道往哪裡跳轉(ComponentName)             2,隱式意圖跳轉:不知道往哪裡跳轉  只要action一致就可以(action)

    >1,ComponentName:應用元件名稱  根據元件名稱可以進行顯示跳轉(知道往哪裡跳轉)     >2,Action:動作         >1,自定義           <!-- 註冊Activity   設定動作 :必須有意圖過濾器-->             <activity android:name=".SecondActivity">                 <intent-filter >                 <action android:name="包名.類名"/>唯一                 <category android:name="android.intent.category.DEFAULT"/>                 </intent-filter>             </activity>         >2,系統提供

        Uri:資源定位符         Uri遵循的格式:scheme://host:port/path             scheme:http  file  content             host:IP             port:埠號             path:請求的路徑

    >3,Category:(種類) 指明動作的環境         >android.intent.category.LAUNCHER:程式啟動的         >android.intent.category.DEFAULT :系統預設的執行方法

        >在清單檔案中 有action  必然跟category 否則程式報錯     >4,Data:資料   描述action資料     >5,Type:資料的型別     >6,putExtra:通訊資料的   intent.putExtra(key,value);     >7,Flag:標記 (一般用於啟動模式)         >FLAG_ACTIVITY_SINGLE_TOP:和啟動模式裡的SingleTop一致

        >FLAG_ACTIVITY_CLEAR_TOP:         和SingleTask相似 >如果當前Activity存在   不在棧頂                     首先將上方的Activity pop出 將自身的Activity銷燬 重新建立一個Activity 在棧頂                  >如果當前Activity存在   在棧頂  將將自身的Activity銷燬 重新建立一個Activity 在棧頂                  >FLAG_ACTIVITY_NEW_TASK             >1,不在清單檔案中設定 和預設啟動模式是一致的             >2,在清單檔案中設定屬性                   android:taskAffinity="aa.bb"                 android:allowTaskReparenting="true"

                taskAffinity用於指定當前Activity(activity1)所關聯的Task,                 allowTaskReparenting用於配置是否允許該activity可以更換從屬task