開發(fā)APP關于Activity數(shù)據(jù)的保存和恢復方法詳解:
臨時保存數(shù)據(jù)和恢復數(shù)據(jù)
在以下場景需要臨時保存當前Activity使用的一些數(shù)據(jù)。手機橫豎屏模式切換時。用戶點擊“hom”鍵,把當前界面切換到后臺時。手機鎖屏時。從當前Activity跳到另一個Activity,但不銷毀之前的Activity時。Activity類提供了onSaveInstanceState(BundleoutState)方法保存數(shù)據(jù),onRestoreInstanceState(BundlesavedInstanceState)方法恢復數(shù)據(jù)。在使用onSaveInstanceState方法時需要注意:當用戶點擊“返回”按鈕、“返回”鍵或者調(diào)用了finish()方法退出Activity時,不會調(diào)用該方法。該方法一定是在onStop方法之前調(diào)用,但是不確定是在onPause方法之前還是之后調(diào)用。對于定義了id的視圖控件,系統(tǒng)在調(diào)用onSaveInstance方法的時候,會自動保存視圖控件的狀態(tài)。在Android源碼中,有相關說明,如圖12-1所示。
onRestoreInstanceState方法在onStart方法之后、onResume方法之前被調(diào)用。
持久保存數(shù)據(jù)和恢復
數(shù)據(jù)用戶點擊屏幕左上角的“返回”按鈕或點擊“返回”鍵退出Activity的時候,有時需要持久保存數(shù)據(jù)。為了改善用戶體驗,最好先顯示提示框,提醒用戶是否要保存當前界面數(shù)據(jù),用戶選擇是,再執(zhí)行保存數(shù)據(jù)的代碼。點擊“返回”按鈕時,代碼如下:@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){ finalintid=item.getItemId(); if(android.R.id.home==id){ isSaveData(); returntrue; } returnsuper.onOptionsItemSelected(item);}點擊“返回”按鍵時,代碼如下:
@OverridepublicvoidonBackPressed(){ isSaveData();}onPause()和onResume()兩個方法在Activity的生命周期中一定會調(diào)用到的,所以無論是臨時保存數(shù)據(jù)還是持久保存數(shù)據(jù),在onPause()方法中保存數(shù)據(jù)、在onResume()方法中恢復數(shù)據(jù)是最保險的做法。好了,APP開發(fā)公司本文關于“Activity數(shù)據(jù)的保存和恢復方法詳解”知識就分享到這里,謝謝關注,博納網(wǎng)絡編輯整理。