共用方式為


Activity.OnRetainNonConfigurationInstance 方法

定義

由系統呼叫,因為組態變更而終結活動時,已知會立即為新的組態建立新的實例。

[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 屬性授權中所述的詞彙使用。

適用於