語言

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() 來取得。 如果你的目標是Build.VERSION_CODES。HONEYCOMB 或更後續版本,請考慮使用 Fragment 搭配 Fragment.setRetainInstance(boolean. 這個函式純粹是作為優化,你不能依賴它被調用。 當呼叫時,會做出多項保證以協助優化配置切換:該函式會在 onStop() 與 onDestroy() 之間被呼叫。 每次呼叫 onDestroy() 後,都會立即建立新的活動實例。 特別是,當回傳物件沒有可關聯的活動時,此期間不會發送任何訊息。 你在這裡回傳的物件,永遠都會從以下活動實例的 getLastNonConfigurationInstance() 方法中取得,如同那裡描述的那樣。 這些保證的設計目的是讓活動能利用此 API 從舊的活動實例到新實例,從載入的點陣圖、網路連線到均勻運行的執行緒,將廣泛的狀態傳播到新實例。 請注意,你不應該傳播任何可能因設定而改變的資料,包括從資源載入的資料,例如字串、版面配置或可繪圖。 切換到下一個活動時不會處理訊息,這讓使用主動物件變得更簡單。 例如,如果你保留的狀態是 AsyncTask,你就保證它的回調函式(例如 AsyncTask.onPostExecute(Result))不會從這裡的呼叫中被呼叫,直到你執行下一個實例的 onCreate(Bundle)。 (不過請注意,AsyncTask.doInBackground(Params) 則無法保證,因為它是在獨立執行緒中執行。) 注意:大多數情況下,你應該使用 Fragment API Fragment.setRetainInstance(boolean) 來代替;這功能也可透過 Android 支援函式庫在舊平台上使用。

Android 參考資料。android.app.Activity.onRetainNonConfigurationInstance

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於