如何在安卓應用程序中保存數據

jopen 10年前發布 | 10K 次閱讀 Android

  英文原文:Introduction : How to save data in your Android application

  這是關于在應用中保存數據和應用狀態系列文章中的第一篇。在安卓 SDK 中有許多機制可以用來保存數據,決定使用哪一種和何時觸發該操作常讓人困惑。當創建個人應用程序的時候你想要做的第一件、最容易的事就是保存一些用戶輸入 的、明確需要保存的數據。下面是一些常用來持久化存儲的方法:

  • 數據保存最基本的方法就是保存到外置存儲設備的文件上。這種存儲可以被用戶和所有的應用程序獲得,當設備當作外置存儲掛在的時候也可以看到。即使 你的應用卸載了該文件也會一直保留,除非你用 GetExternalFileDir 方法獲得保存文件的文件夾。這最適用于被用戶編輯過的文件,即使應用卸載了也最好一直保留著,例如圖片和文檔。
  • 你也可以把文件保存為內部存儲,這對于你的應用程序是私有的。這種情況下,用戶和其他應用程序都得到這些文件,并且當你應用卸載的時候文件將被刪除。這最適用于保存一些簡單的數據,避免了處理數據庫的開銷。
  • 另外,你也可以把用戶的配置保存成鍵/值對,使用 Preference API 來創建 SharedPreferences 文件。你可以創建一個 PreferenceActivity 或者包含 PreferenceFragment 的 Activity 保存參數配置,他們的布局中都有 Preferences 對象來代替 View 對象。
  • 最后,如果你要保存的數據結構很復雜,每個應用都有自己的私有的 SQLLite 數據庫來保存數據。如果你的應用被卸載,這些數據也將被銷毀。

  另外,有些情況需要保存應用程序的當前狀態,因為某個事件被觸發。例如:

  • 當設備被旋轉的時候,當前的 Activity 被重新創建,布局也被調整。
  • 當你的應用被用戶或者其他應用放到后臺去運行的時候,例如手機接到一個電話。另外,用戶打開了應用程序的另一個 Activity,當前的 Activity 也會被放到后臺。任何在后臺運行的 Activity 當內存不足的時候都可能被回收,當需要的時候再被重新創建。
  • 當用戶明確地關閉了應用。

  以上的情況,你都需要持久化保存用戶輸入的數據。當 Activity 被放到后臺或者在銷毀的過程中,onPause 方法總是被調用,緊接著是 onStop 即使 UI 被完全隱藏。所以最好在 OnPause 方法中保存數據。隨后,當用戶再次接觸之前的 Activity,如果它仍在內存中 onRestart,onstart 和 onResume 方法將被調用,如果已經被回收了就需要被重新常見,那么 onCreate、onStart、和 onResume 將被調用。所以如果你想在所有情況下都再次顯示之前的數據,你應該在 onResume 方法中恢復 UI。

  如果不需要永久的保存數據而只想保存 UI 的狀態,你可以在 onSaveInstanceState 方法中把數據保存在 Bundle 中。該方法不能用來保存數據,因為它不是 Activity 生命周期的一部分,僅僅當 Activity 需要重新創建或者被放到后臺的時候被 UI 事件觸發,被永久銷毀的時候該方法不被調用。所以它僅用于保存一些暫時性 View 狀態。有些數據已經被安卓 SDK 保存了,但你可能需要保存些額外的信息,例如,假如你有些自定義的控制,當用戶按返回鍵回到 Activity 的時候,UI 的狀態需要被恢復,如果 Activity 仍在內存中,保存有狀態信息的 bundle 對象可以在 onRestoreInstanceState 方法中獲得,如果 Activity 被回收了需要重新創建,可以在 onCreate 方法中獲得 bundle 對象。

  翻譯: 伯樂在線 - 黃瓜

  譯文鏈接: http://blog.jobbole.com/71882/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!