日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析

發布時間:2025/6/17 Android 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者 : 韓曙亮

轉載請著名出處 :?http://blog.csdn.net/shulianghan/article/details/38297083



一. 相關方法簡介



1. 狀態保存方法示例


package com.example.octopus_saveinstance;import android.app.Activity; import android.os.Bundle;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {super.onRestoreInstanceState(savedInstanceState);}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);}}

2. 相關方法介紹?



(1) onCreate(Bundle savedInstanceState) 方法


Activity 創建時回調 : 該方法會自動傳入一個 Bundle 對象, 該 Bundle 對象就是上次被系統銷毀時在?onSaveInstanceState 或者?onRestoreInstanceState 中保存的數據;

-- 注意 : 只有是系統自動回收的時候才會保存 Bundle 對象數據;

-- Bundle 對象來源 : onCreate() 方法中的 Bundle 對象參數, 是在 onSaveInstance() 或者 onRestoreInstanceState() 方法中保存的 Bundle 對象;

.



(2)?onSaveInstanceState(Bundle outState) 方法


outState 參數作用 :?

-- 數據保存 : Activity 聲明周期結束的時候, 需要保存 Activity 狀態的時候, 會將要保存的數據使用鍵值對的形式 保存在 Bundle 對象中;

-- 恢復數據 : 在 Activity 的 onCreate()方法 創建 Activity 的時候會傳入一個 Bundle 對象, 這個 Bundle 對象就是這個 outState 參數;


調用時機 : Activity 容易被銷毀的時候調用, 注意是容易被銷毀, 也可能沒有銷毀就調用了;

-- 按下Home鍵?: Activity 進入了后臺, 此時會調用該方法;

-- 按下電源鍵 : 屏幕關閉, Activity 進入后臺;

-- 啟動其它 Activity : Activity 被壓入了任務棧的棧底;

-- 橫豎屏切換 : 會銷毀當前 Activity 并重新創建;


onSaveInstanceState方法調用注意事項 :?

-- 用戶主動銷毀不會調用 : 當用戶點擊回退鍵 或者 調用了 finish() 方法, 不會調用該方法;

-- 調用時機不固定 : 該方法一定是在 onStop() 方法之前調用, 但是不確定是在 onPause() 方法之前 還是 之后調用;

-- 布局中組件狀態存儲 : 每個組件都 實現了 onSaveInstance() 方法, 在調用函數的時候, 會自動保存組件的狀態, 注意, 只有有 id 的組件才會保存;

-- 關于默認的?super.onSaveInstanceState(outState) : 該默認的方法是實現 組件狀態保存的;



(3)?onRestoreInstanceState(Bundle savedInstanceState) 方法


方法回調時機 : 在 Activity 被系統銷毀之后 恢復 Activity 時被調用, 只有銷毀了之后重建的時候才調用, 如果內存充足, 系統沒有銷毀這個 Activity, 就不需要調用;

-- Bundle 對象傳遞 : 該方法保存的 Bundle 對象在 Activity 恢復的時候也會通過參數傳遞到 onCreate() 方法中;

-- 位于生命周期位置吧 : 該方法在 onResume() 方法之前保存信息;?



二 代碼示例


Activity 主要代碼 :?

package com.example.octopus_saveinstance;import android.app.Activity; import android.os.Bundle;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if(savedInstanceState != null)System.out.println("onCreate() : " + savedInstanceState.getString("octopus"));}@Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {super.onRestoreInstanceState(savedInstanceState);System.out.println("onRestoreInstanceState() : " + savedInstanceState.getString("octopus"));}@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);outState.putString("octopus", "www.octopus.org.cn");System.out.println("onSaveInstanceState() : save date www.octopus.org.cn");}}

運行結果 : 在運行的過程中 旋轉屏幕;

I/System.out( 8167): onSaveInstanceState() : save date www.octopus.org.cn I/System.out( 8167): onCreate() : www.octopus.org.cn I/System.out( 8167): onRestoreInstanceState() : www.octopus.org.cn

作者?:?韓曙亮

轉載請著名出處?:?http://blog.csdn.net/shulianghan/article/details/38297083

總結

以上是生活随笔為你收集整理的【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。