前幾篇文章介紹了在 Android 開發中,使用的各種資料儲存方式,包含:Resource Files、Internal Storage、External Storage、SharedPreferences、SQLite 及 Room。 這篇是本系列的最後一篇文章,總結每一種儲存方式的主要特色,幫助大家在開發 APP 時,挑選適合的方式來實作。

Resource Files

主要特色

  • 僅能讀取,不能寫入。
  • 可以很直覺的在專案中,使用資料夾管理並編輯檔案內容。
  • 解除安裝時,資料將一併刪除。
  • 儲存資料形式:檔案
  • 所需權限:無需任何權限

詳細說明Android Resource Files 資源檔案使用方法

Internal Storage

主要特色

  • 無法與其他 APP 共享資料。
  • 無法使用手機內建的檔案管理 APP 瀏覽檔案,需改用 Android Studio 內建的 Device File Explorer 工具。
  • 適合存放 APP 執行時,會用到的必要檔案,或較機密的資料。
  • 解除安裝時,資料將一併刪除。
  • 儲存資料形式:檔案
  • 所需權限:無需任何權限

詳細說明Android Internal Storage 內部儲存使用方法

External Storage

主要特色

  • 可與其他 APP 共享資料。
  • 可使用手機內建的檔案管理 APP 瀏覽檔案。
  • 適合存放 APP 執行時,非必要的檔案,就是被刪除也不影響 APP 的執行的檔案。
  • 區分 Primary External Storage 及 Secondary External Storage 兩種類型,每個類型還區分 APP 專屬目錄 (app-specific) 及共享目錄
  • 解除安裝時,APP 專屬目錄將移除,共享目錄則不會移除。
  • 儲存資料形式:檔案
  • 所需權限:Primary External Storage 的共享目錄需要權限,Secondary External Storage 目錄目前尚無有效方法可操作,其餘則無需任何權限。

詳細說明Android External Storage 外部儲存使用方法

SharedPreferences

主要特色

  • 輕型的資料儲存方式。
  • 使用 XML 檔案儲存 Key-Value 形式資料。
  • 支援 Boolean、Float、Int、Long 及 String 等資料型別。
  • 每個 APP 的 SharedPreferences 各自獨立,無法互相存取。
  • 解除安裝時,資料將一併刪除。
  • 儲存資料形式:Key-Value 資料
  • 所需權限:無需任何權限

詳細說明Android SharedPreferences 使用方法

SQLite

主要特色

  • 輕量化的資料庫,與一般的 SQL 資料庫用法大同小異。
  • 適合儲存複雜且重複的結構化資料。
  • Android 內建支援,無需安裝任何套件。
  • 每個 APP 的 SQLite 各自獨立,無法互相存取。
  • 解除安裝時,資料將一併刪除。
  • 儲存資料形式:資料庫
  • 所需權限:無需任何權限

缺點

  • 無法在編譯時檢查語法錯誤,必需等到執行時才顯示錯誤訊息。
  • 必需使用大量樣板程式碼,才能將資料庫資料轉為資料物件。

詳細說明Android SQLite 資料庫使用方法

Room

主要特色

  • 底層依然是 SQLite 資料庫。
  • 改進 SQLite API 存在的一些缺點。
  • 編譯時會驗證語法是否正確。
  • 簡化容易出錯的樣板程式碼。
  • 簡化資料庫遷移路徑。

詳細說明Android Room 資料庫使用方法