android中的activity和startActivityForResult詳細分析

1. 概述:Activity作為公共類,繼承自ContextThemeWrapper.

Activity專註於用戶所要做的事情。幾乎所有的Activity都是和用戶進行交互的。因此,Activity通過使用setContentView(view)來展示界面元素。盡管Activities通常是全屏顯示窗口的,但是你可以指定下面兩種方法的一種來進行顯示:

浮動窗體:android:theme="?android:attr/windowIsFloating"

嵌入到其他的Activity中。

2.startActivity(Intent)和startActivityForResult(Intent,int)的區別使用:

startActivity(Intent) 方法可以用來啟動一個新的 activity ,這個 activity 將被放置在 activity 棧的棧頂。這個方法隻有一個參數 Intent ,這個參數描述瞭將被執行的 activity 。
      有時候你希望在一個 activity 結束時得到它返回的結果。舉個例子,你可能啟動一個 activity 來讓用戶從通訊簿中選擇一個人;當它結束的時候將會返回這個所選擇的人。為瞭得到這個返回的信息,你可以使用 startSubActivity(Intent, int) 這個方法來啟動新的 activity ,第二個整形參數將會作為這次調用的識別標記。這個 activity 返回的結果你可以通過 onActivityResult(int, int, String, Bundle) 方法來獲得,此方法的第一個參數就是之前調用所使用的識別標記。
      當 activity 退出的時候,它可以調用 setResult(int) 來將數據返回給他的父進程。這個方法必須提供一個結果碼,這個結果碼可以使標準結果 RESULT_CANCELED, RESULT_OK ,也可以是其他任何從 RESULT_FIRST_USER 開始的自定義值。此外,它還可以返回一段字符串(經常是一段數據的 URL 地址),一個包含它所有希望值的 Bundle 。這些信息都會在父 activity 的回調函數 Activity.onActivityResult() 中出現,並連同最初提供的識別標記一起(此處有些拗口,意思其實就是子activity 返回的內容、返回碼、識別標記都將作為參數,按照不同的返回情況來調用父activity 的Activity.onActivityResult() 方法,以實現出現各種返回時父activity 做出響應的處理)。 

摘自 燕龍安的專欄 

發佈留言