詳細(xì)闡述有關(guān)Android屬性問題
Android屬性的內(nèi)容包括:更容易的設(shè)計集成、擴充的部署選項、更為豐富多彩的登錄和個性化服務(wù)以及更好的數(shù)據(jù)訪問和同步,希望大家能夠從中得到相關(guān)自己想要的信息。
并調(diào)用startActivity().這時候,地圖組件可以顯示地圖,當(dāng)用戶點擊“后退”按鈕,你的activity會重新顯示在屏幕上。對用戶來說,即使地圖程序是定義在另外一個程序中、在另外一個進(jìn)程中運行,但是它看起來好像你的程序的一部分。
Android屬性通過將2個activities放在用一個任務(wù)中,使得用戶有這樣的體驗。這一系列的activities,安排在一個堆棧中。堆棧中的根activity是任務(wù)的開始,或者說是用戶選擇的應(yīng)用程序的第一個activity。堆棧頂部的activity 是當(dāng)前正在運行的activity— 目前正在吸引用戶注意的一個。
當(dāng)一個activity啟動另外一個的時候,新的activity被壓棧,變?yōu)楫?dāng)前activity. 之前的activity 還在任務(wù)中。當(dāng)用戶點擊后退(BACK)鍵,當(dāng)前的acitivity被彈出棧,之前的activity成為正在運行的。如果堆棧中有多個同樣的activity的實例,如有多個地圖查看器(如程序設(shè)定了多個打開地圖查看器的入口),那么堆棧不可以重新排序,只能彈出和壓入。
任務(wù)是activities的堆棧,而非裝箱單中的一個類,因此不能離開activity單獨設(shè)定一個堆棧的值。例如,下面一章將要談到‘任務(wù)的吸引力’,這個值就是設(shè)定在任務(wù)的根activity里面的。
任務(wù)中的所有activities作為一個整體移動。整個任務(wù)可以放在前臺(foreground)或者后臺(background)運行。想象一下,例如,有個任務(wù)有4個activities,用戶點擊“HOME”鍵,回到程序開始的地方,選擇了一個新的程序(其實是一個新的任務(wù))。
當(dāng)前的任務(wù)移到后臺運行,新任務(wù)的根activity開始顯示。過了一會,用戶又回到HOME界面,選擇了剛才的程序(剛才的任務(wù))。則這個含有4個activities的任務(wù)回到前臺運行。當(dāng)用戶點擊BACK按鈕,屏幕不會顯示用戶剛剛離開時候的activity,而是在堆棧頂部的activity被彈出,顯示前一個activity。
默認(rèn)的情況下,上面這些描述是沒有問題的。當(dāng)然,也有很多辦法來改變以下:任務(wù)和activity的關(guān)系、任務(wù)中一個activity的動作。這些是被Intent對象(啟動此acivity的)的標(biāo)志集(flag set)和activity在裝箱單中的<activity>節(jié)點控制的。
Intent的標(biāo)志集包括:
- FLAG_ACTIVITY_NEW_TASK
- FLAG_ACTIVITY_CLEAR_TOP
- FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
- FLAG_ACTIVITY_SINGLE_TOP
典型的<activity> 的節(jié)點屬性如下:
- taskAffinity
- launchMode
- allowTaskReparenting
- clearTaskOnLaunch
- alwaysRetainTaskState
- finishOnTaskLaunch
本文進(jìn)行詳細(xì)說明了這些標(biāo)記和Android屬性的意義和互動。
【編輯推薦】