Activity.OnRetainNonConfigurationInstance 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
由系統呼叫,因為組態變更而終結活動時,已知會立即為新的組態建立新的實例。
[Android.Runtime.Register("onRetainNonConfigurationInstance", "()Ljava/lang/Object;", "GetOnRetainNonConfigurationInstanceHandler")]
public virtual Java.Lang.Object? OnRetainNonConfigurationInstance ();
[<Android.Runtime.Register("onRetainNonConfigurationInstance", "()Ljava/lang/Object;", "GetOnRetainNonConfigurationInstanceHandler")>]
abstract member OnRetainNonConfigurationInstance : unit -> Java.Lang.Object
override this.OnRetainNonConfigurationInstance : unit -> Java.Lang.Object
傳回
任何保留所需狀態的物件,以傳播至下一個活動實例
- 屬性
備註
由系統呼叫,因為組態變更而終結活動時,已知會立即為新的組態建立新的實例。 您可以傳回您喜歡這裡的任何物件,包括活動實例本身,稍後可以在新的活動實例中呼叫 #getLastNonConfigurationInstance()
來擷取。
<em> 如果您的目標是 android.os.Build.VERSION_CODES#HONEYCOMB
或更新版本,請考慮改用 Fragment
搭配 Fragment#setRetainInstance(boolean) Fragment.setRetainInstance(boolean
使用 。</em>
此函式純粹稱為優化,而且您不得依賴呼叫它。 呼叫時,將會進行一些保證,以協助優化組態切換:<ul><li> 函式將在和 #onDestroy
之間#onStop
呼叫。 <li> 活動的新實例將會<在呼叫此#onDestroy()
活動之後立即建立 em>always</em>。 特別是, <在這段期間會分派 em>no</em> 訊息(當傳回的對象沒有要關聯的活動時)。 <li> 您在這裡傳回的物件將會<從#getLastNonConfigurationInstance()
下列活動實例的 方法取得 always></em>,如該處所述。 </ul>
這些保證的設計目的是讓活動能夠使用此 API,將廣泛的狀態從舊活動實例傳播到新的活動實例,從載入的點陣圖,到網路連線,甚至主動執行線程。 請注意,您應該<不要></em> 傳播任何可能根據設定變更的數據,包括從字元串、版面配置或可繪製等資源載入的任何數據。
在切換至下一個活動期間,不處理任何訊息的保證可簡化搭配使用中物件的使用。 例如,如果您的保留狀態是您 android.os.AsyncTask
保證其回呼函式(例如 android.os.AsyncTask#onPostExecute
)將不會從這裡的呼叫,直到您執行下一個實例的 #onCreate(Bundle)
。 然而,請注意,當然沒有這種保證, android.os.AsyncTask#doInBackground
因為那是在不同的線程中執行。
<strong>Note:</strong> 對於大部分情況下,您應該改用 Fragment
API Fragment#setRetainInstance(boolean)
;這也可透過 Android 支援連結庫在較舊的平臺上使用。
的 android.app.Activity.onRetainNonConfigurationInstance()
Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。