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