在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ persistableMode 與 Activity 的持久化
多分辨率適配常用目錄
Android 開發(fā)環(huán)境(Eclipse+ADT+Android 5.0)
Android 原型設(shè)計工具探索
Makefile 快速入門
Android Studio的NDK開發(fā)
人臉檢測-靜態(tài)
getprop 與 dumpsys 命令
Maven 編譯開源二維碼掃描項目 zxing
畫布 Canvas
組合控件
Linux 下的模擬器硬件加速
讀取 Excel
android.hardware.camera2 使用指南
橫豎屏切換
Ubuntu 下切換 JDK 版本
拍照和錄像 with Camera
文本與布局
按鈕控制 ViewPager 的左右翻頁
用 TableLayout 偽裝表格顯示數(shù)據(jù)
Preference Activity 使用詳解
模擬器如何重啟?試試 Genymotion!
獲得屏幕物理尺寸、密度及分辨率
語音識別
了解 native activity
Android Studio 導(dǎo)入第三方類庫、jar 包和 so 庫
啟動另一個 App/apk 中的 Activity
APK 簽名
兩個開源的圖表/報表控件
android studio 導(dǎo)出 jar 包(Module)并獲得手機信息
圖片的 Base64 編解碼
混淆與反編譯
Android Studio 和 Gradle
Android 5.1 SDK 下載與配置
persistableMode 與 Activity 的持久化
adb 取出安裝在手機中的 apk
Android Studio 中的源代碼管理
Handler 使用中可能引發(fā)的內(nèi)存泄漏

persistableMode 與 Activity 的持久化

API 21為 Activity 增加了一個新的屬性,只要將其設(shè)置成 persistAcrossReboots,activity 就有了持久化的能力,另外需要配合一個新的 bundle 才行,那就是 PersistableBundle。

這里的持久化與傳統(tǒng)意義的不同,它的具體實現(xiàn)在 Activity 重載的 onSaveInstanceState、onRestoreInstanceState 和 onCreate 方法。

    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)

    public void onRestoreInstanceState(Bundle savedInstanceState, PersistableBundle persistentState)

    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState)

onSaveInstanceState 和 onRestoreInstanceState 方法是一對拯救災(zāi)難的方法,它們不在“正?!暗?Activity 生命周期中,只有一些突發(fā)異常情況才會觸發(fā)它們,比如橫豎屏切換、按 Home 鍵等。當 API 21后增加了 PersistableBundle 參數(shù),令這些方法有了系統(tǒng)關(guān)機重啟后數(shù)據(jù)恢復(fù)的能力。

網(wǎng)友們評價不一,但是無論如何這都為我們提供了一種便利。而它應(yīng)用的場景是異常的狀況,不會影響我們正常的數(shù)據(jù)持久化辦法。比如在 pause 方法中做一些操作 Preferences,文件 I/O,SQLite 數(shù)據(jù)庫,ContentProvider 等常規(guī)辦法。

如何實踐呢?

只需在 Manifest 中的 activity 設(shè)置屬性:

    android:persistableMode="persistAcrossReboots"

然后在 activity 中直接用上述的三個方法即可。

另外注意 API 版本是21及以上。

驗證是個難題。因為我沒有5.0及以上系統(tǒng)的設(shè)備,求助與模擬器吧,各種問題都來了。無論是 Genymotion 還是自帶的模擬器,在關(guān)機的過程中模擬器都會卡死。雖然我在 log 里看到了程序已經(jīng)走過了 onSaveInstanceState(Bundle,PersistableBundle)。就差模擬器關(guān)機后開啟看效果。我這邊是沒有成功,如果哪位大蝦看到了效果,請告訴我。