Android活動小結

1.活動

顯式intent

Intent(Context packageContext, Class<?> cls);

隱式intent

給活動添加響應:在AndroidManifest中給一個Activity添加intent-filter標籤,並指定actioncategory 的內容。
對應Intent的另一個構造函數:

Intent(String action)//action即對應name屬性
此外,Intent還有另外幾個常用的構造函數
Intent(String action, Uri uri);
Intent(String action, Uri uri, Context packageContext, Class<?> cls)
URI主要是結合程序之間的數據共享ContentProvider
  • 隱式Intent的更多用法
    給Intent指定action爲安卓系統內置的動作,如Intent.ACTION_VIEW
    , Intent.ACTION_DIAL 等, 接着通過Uri.parse()把一字符串解析成一個Uri對象,然後調用setData()方法將一個Uri對象傳進去。
    於此對應,我們還可以在< intent-filter >標籤中再配置一個< data >標籤,用於更精確地指定當前活動能夠響應什麼類型的數據。< data >標籤中主要可以配置一下內容:
android::scheme 用於指定數據的協議部分,如http
android::host 用於指定數據的主機名部分,如www.baidu.com
android::port 用於指定數據的端口部分, 一般緊隨在主機名之後
android::path 用於指定主機名和端口之後的部分,如一段網址中跟在域名之後的內容
android::mimeTyoe 用於指定可以處理的數據類型,允許使用通配符的方式進行指定

返回數據給上一個活動

Activity中的startAcitivityForResult()方法接受兩個參數,一個Intent,一個請求碼,這個方法期望在活動銷燬的時候能夠返回一個結果給上一個活動。

期望返回結果的activity在finish之前構建一個Intent(僅僅用於傳遞數據,而沒有任何指定的“意圖”),把想回傳的數據放進Intent然後調用setResult()回傳給上一個活動。

setResult(int ResultCode, Intent intent);
//這裏的ResultCode一般只是用RESULT_OK/RESULT_CANCELED

當該活動被銷燬之後會回調上一個活動的onACtivityResult()方法。

void onActivityResult(int requestCode, int resulrCode, Intent data)

該方法有三個參數,第一個參數requestCode,即啓動活動時傳入的請求碼,第二個參數resultCode,即我們返回數據時傳入的處理結果,第三個參數data,即攜帶者返回數據的Intent。

由於在一個活動中有可能調用startActivityForResult()方法去啓動很多不同的活動,每一個活動放回的數據都會回調到onActivityResult()這個方法中,所以首先要通過檢查requestCode的值來判斷數據來源,再通過resultCode的值來判斷處理結果是否成功。

Activity的啓動模式

standard

standard是活動的默認啓動模式,每當啓動一個新的Activity,系統不會在乎這個活動是否已經在返回棧中存在,每次啓動都會創建該活動的一個新的實例。

singleTop

在啓動活動時如果發現返回棧的棧頂已經是該活動,則認爲可以直接使用它,不會再創建新的活動實例。

singleTask

當活動的啓動模式指定爲singleTask時,每次啓動該活動時系統首先會在返回棧中檢查是否存在該活動的實例,如果發現已經存在則直接使用該實例,並把在這個活動之上的所有活動統統出棧,如果沒有發現就會創建一個新的活動實例。

singleInstance

指定爲singleInstance模式的活動會啓用一個新的返回棧來管理這個活動(不同程序可以共享這個活動的實例)。(這個比較複雜這裏先不介紹Orz. >.<)

發佈了39 篇原創文章 · 獲贊 16 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章