簡體   English   中英

保存可以在 android 應用程序的所有活動中訪問的數組的最佳方法是什么?

[英]What is the best way to save an array that can be accessed in all activities of an android app?

我正在編寫一個需要能夠保存數據的應用程序,以便下次用戶進入該應用程序時,他們的進度將被保存。 我在想一個數組,其值將隨着用戶做出選擇而更新,這將是實現這一點的最簡單方法。 我的第一個想法是使用讀寫方法制作一個 class 文件,以便所有活動都可以更新和讀取數組中的數據,但我認為當應用程序關閉或我發布更新時該數組不會是永久的。 確保我的保存數組在應用關閉和未來更新之間是永久的最好是什么?

您可以通過多種方式做到這一點。

  1. 使用 SharePreferences
//To add or update a data
SharedPreferences sharedPref;
sharedPref = getSharedPreferences("AnyNameForSharedPref", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("name", name);
editor.putString("email", email);
editor.putString("phone", phone);
editor.putString("gender", gender);
editor.apply();


//To get the data

final SharedPreferences sharedPref = getSharedPreferences("AnyNameForSharedPref", Context.MODE_PRIVATE);
sharedPref.getString("name", "Default text if it is not present"));
  1. 使用房間

由於 Room 基於 SQLite 數據庫,如果沒有大量數據要存儲,您可以避免使用它。 要使用 ROOM,請添加以下依賴項:

dependencies {
  def room_version = "2.2.5"

  implementation "androidx.room:room-runtime:$room_version"
  annotationProcessor "androidx.room:room-compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor

  // optional - Kotlin Extensions and Coroutines support for Room
  implementation "androidx.room:room-ktx:$room_version"

  // optional - RxJava support for Room
  implementation "androidx.room:room-rxjava2:$room_version"

  // optional - Guava support for Room, including Optional and ListenableFuture
  implementation "androidx.room:room-guava:$room_version"

  // Test helpers
  testImplementation "androidx.room:room-testing:$room_version"
}

這是帶有示例的 ROOM 的官方文檔。 Android機房

你有很多選擇來完成這項工作。 首先,您可以使用 SQLite 數據庫(如果我是你,我會使用它)。 創建擴展SQLiteOpenHelper的 class 例如:

public class DBHelper extends SQLiteOpenHelper {

public DBHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}

public void onCreate(SQLiteDatabase db) {}
public void onDestroy(SQLiteDatabase database, int oldVersion, int newVersion)      {}
}

這是一個如何創建和使用SQLiteDatabase的示例: https://www.tutorialspoint.com/android/android_sqlite_database.htm

其次,您可以使用SharedPreferences 也許,如果除了數組之外沒有其他數據,這是我更簡單的方法。

如果您想在線保存數據,您可以使用 Firebase。 當您希望多個用戶共享數據時,這很有用。 這是一個如何使用 Firebase 的示例: https://blog.mindorks.com/firebase-realtime-database-android-tutorial

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM