最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android中用onSaveInstanceState保存Fragment狀態(tài)的方法

 更新時間:2016年04月27日 10:13:14   作者:SoloHo  
這篇文章主要介紹了Android中用onSaveInstanceState保存Fragment狀態(tài)的方法,onSaveInstanceState可以將數據保存在Fragment或Activity中,需要的朋友可以參考下

在Fragment里面,利用onSaveInstanceState保存數據,并可在onActivityCreated里面恢復數據。

public void onActivityCreated(Bundle savedInstanceState) {
  super.onActivityCreated(savedInstanceState);
  ...
  if (savedInstanceState != null) {
    // Restore the fragment's state here
  }
}

public void onSaveInstanceState(Bundle outState) {
  super.onSaveInstanceState(outState);
  // Save the fragment's state here
}

在Activity里面,利用onSaveInstanceState保存Fragment實例的數據,并可在onCreate里面恢復數據:

private Fragment myFragment;

public void onCreate(Bundle savedInstanceState) {
  ...
  if (savedInstanceState == null) {
    // Instantiate fragment
  } else {
    // Restore the fragment's instance
    myFragment = getSupportFragmentManager().getFragment(
          savedInstanceState, "fragment");
  }
  ...
}

@Override
protected void onSaveInstanceState(Bundle outState) {
  super.onSaveInstanceState(outState);
  //Save the fragment's instance
  // fragment instance may be null
  if (myFragment != null) {
    getSupportFragmentManager().putFragment(outState, "fragment", myFragment);
  }
}

實例
首先看一個步驟,如果是人為關閉Activity或者Fragment, 比如點擊了后退鍵,主動關閉當前頁面,就會走 onPause() --> onStop()  --> onDestroy()  而onSaveInstanceState() 并不會被調用. onSaveInstanceState() 只有在系統即將要自動清理銷毀Activity或Fragment前才會調用, 比如

1, 由于重力感應 手機從豎屏變?yōu)闄M屏,

2, 手機點擊Home鍵和長按Home鍵

3, 點擊電源鍵鎖屏時

4, 從當前Activity跳到另一個Activity

5, 應用內存不足即將自動銷毀時等情況


 綜合上面的情況,可以看出, onSaveInstanceState()  這個方法適合臨時保存一些非永久性的數據.如果要持久化保存數據,就要將操作放在onStop(), onDestroy()這些方法中去.onSaveInstanceState()  適合的是當前Activity或者Fragment一旦被系統自己銷毀,應用還能在這之前保存一些必要的數據, 并且用戶的操作很快又回到當前這個頁面,這個時候數據并沒有丟失,還能最大程度的恢復之前狀態(tài).這就是這個方法最大的意義.下面上例子做個簡單示例:

在Fragment中:

//系統自動銷毀Fragment前保存必要的數據
@Override
public void onSaveInstanceState(Bundle outState){
<span style="white-space:pre"> </span>super.onSaveInstanceState(outState);
<span style="white-space:pre"> </span>String content = etCon.getText().toString();
<span style="white-space:pre"> </span>outState.putString("inputCon", content);
}
 
//恢復數據
@Override
public void onViewStateRestored(Bundle savedInstanceState){
<span style="white-space:pre"> </span>super.onViewStateRestored(savedInstanceState);
<span style="white-space:pre"> </span>//恢復之前輸入框的內容
<span style="white-space:pre"> </span>if(savedInstanceState != null){
<span style="white-space:pre"> </span>etCon.setText(savedInstanceState.getString("inputCon", ""));
 }
}

在Activity中

//系統自動銷毀Activity前保存必要的數據
@Override
public void onSaveInstanceState(Bundle outState){
<span style="white-space:pre"> </span>super.onSaveInstanceState(outState);
 String content = etCon.getText().toString();
 outState.putString("inputCon", content);
}
 
//Activity中可在onRestoreInstanceState()方法恢復數據,也可以在onCreate()中恢復,因為Activity一旦被銷毀就會重走一次onCreate()開始的正常生命周期
@Override
public void onRestoreInstanceState(Bundle savedInstanceState){
 super.onRestoreInstanceState(savedInstanceState);
 //恢復之前輸入框的內容
 if(savedInstanceState != null){
 etCon.setText(savedInstanceState.getString("inputCon", ""));
 }
}
 
@Override
public void onDestroy(){
 super.onDestroy();
 //Activity被銷毀前可進行最后一次數據的保存,過了這村就沒這店了.
}

這里有個重要的點,上面的上面所提及的onSaveInstanceState()方法只有在Activity或Fragment確定要被系統自動清除時,才會被調用,如果不是長期后臺應用,頁面沒有被系統kill掉,對應的Activity或Fragment也就不會調用onSaveInstanceState()這些方法.

相關文章

  • Android使用ftp方式實現文件上傳和下載功能

    Android使用ftp方式實現文件上傳和下載功能

    這篇文章主要介紹了Android使用ftp方式實現文件上傳和下載功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Android仿活動時分秒倒計時效果

    Android仿活動時分秒倒計時效果

    這篇文章主要為大家詳細介紹了Android仿活動時分秒倒計時效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 從源碼分析Android的Volley庫的工作流程

    從源碼分析Android的Volley庫的工作流程

    這篇文章主要介紹了從源碼分析Android的Volley應用開發(fā)框架的工作流程,文中對Volley的請求處理和緩存部分介紹得比較詳細,需要的朋友可以參考下
    2016-02-02
  • Android編程實現手機自帶內部存儲路徑的獲取方法

    Android編程實現手機自帶內部存儲路徑的獲取方法

    這篇文章主要介紹了Android編程實現手機自帶內部存儲路徑的獲取方法,涉及Android針對掛載點信息的獲取技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • Moshi?完美解決Gson在kotlin中默認值空的問題詳解

    Moshi?完美解決Gson在kotlin中默認值空的問題詳解

    這篇文章主要為大家介紹了Moshi?完美解決Gson在kotlin中默認值空的問題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Flutter桌面開發(fā)windows插件開發(fā)

    Flutter桌面開發(fā)windows插件開發(fā)

    這篇文章主要為大家介紹了Flutter桌面開發(fā)windows插件開發(fā)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Flutter啟動頁(閃屏頁)的具體實現及原理詳析

    Flutter啟動頁(閃屏頁)的具體實現及原理詳析

    這篇文章主要給大家介紹了關于Flutter啟動頁(閃屏頁)的具體實現及原理的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Flutter具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04
  • Android使用Retrofit仿微信多張圖片拍照上傳

    Android使用Retrofit仿微信多張圖片拍照上傳

    這篇文章主要介紹了Android使用Retrofit仿微信多張圖片拍照上傳的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 在Android項目中使用AspectJ的方法

    在Android項目中使用AspectJ的方法

    這篇文章主要介紹了在Android項目中使用AspectJ的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • Android在listview添加checkbox實現原理與代碼

    Android在listview添加checkbox實現原理與代碼

    Android在listview添加checkbox如何實現一直都是新手朋友們的頭疼問題,接下來為您詳細介紹實現方法,感興趣的朋友可以了解下
    2013-01-01

最新評論

霍城县| 高邑县| 南投县| 延长县| 汝州市| 长武县| 衢州市| 西安市| 南昌县| 石棉县| 刚察县| 阜城县| 灌云县| 波密县| 隆尧县| 白城市| 东兰县| 固原市| 东乌珠穆沁旗| 荆门市| 马龙县| 靖州| 宁国市| 五指山市| 司法| 苍南县| 邓州市| 明光市| 舒城县| 凌海市| 米林县| 新沂市| 宽城| 米脂县| 柳江县| 大荔县| 定远县| 龙川县| 临西县| 寻乌县| 双桥区|