關於activity中保存數據

http://blog.csdn.net/cyp331203/article/details/44985087

http://www.cnblogs.com/wumao/archive/2011/04/25/2026483.html


1.關於activity被幹掉

在3.0之後,只有等onStop執行完纔會被幹掉


2.onSaveInstanceState參數是bundle型數據,他是在activity轉到後臺狀態前調用

什麼是後臺狀態?看不見了,也就是onStop

故而可以在onPause之後,onStop之前調用onSaveInstanceState保存數據


但是onSaveInstanceState並不是一定會被調用


3.一個activity啓動另一個activity 

  當前activity  opPause後,轉到另一個activity,onCreate。。。

  可以在當前activity  onPause時向數據庫保存一些數據,然後在新的activity裏調用

  

4.onSaveInstanceState保存的是bundle,鍵值對

有可能有別的數據類型,可以在Object onRetainNonConfigurationInstance()中進行保存,並通過getLastNonConfigurationInstance()方法獲取之前函數返回的Object,並根據此Object進行設置(這步還原的操作可在onCreate()和onStart()方法中執行)。


5. 對於橫豎屏導致的數據丟失名可以在manifest裏配置一下,只改變字體什麼的,activity不重新構建

 android:configChanges="orientation|keyboardHidden"

6. 何時用onSaveInstanceState方法

其實系統本身給幾乎所有UI控件都恰當的實現了onSaveInstanceState()方法,只要這些控件分配了ID

只有需要保存額外的一些數據,變量什麼的,就可以用這個方法來保存


7. 題外話,對於一些常用的數據,可以通過application來保存數據

每一個APP啓動時,都有一個唯一的PID,進程ID

所有的activity都在這個進程上運行

所以,在同一Application中所有的Activity都可以通過Activity.getApplication()方法獲取到同一個Application對象,繼承Application類,即可訪問自定義數據。 創建新class,取名MyApp,繼承android.app.Application父類,並在MyApp中定義需要保存的屬性,如:用戶名,用戶類型。 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章