保存可在 android 应用程序的所有活动中访问的数组的最佳方法是什么?
What is the best way to save an array that can be accessed in all activities of an android app?
我正在编写一个需要保存数据的应用程序,以便用户下次进入该应用程序时,他们的进度将被保存。我在想一个数组,其值将随着用户做出选择而更新,这将是实现这一点的最简单方法。我的第一个想法是创建一个具有读写方法的 class 文件,以便所有活动都可以更新和读取数组中的数据,但我认为当应用程序关闭或我发布更新时,该数组不会永久存在.确保我的保存数组在应用程序关闭和未来更新之间永久存在的最佳方法是什么?
你有很多选择来完成这项工作。
首先,您可以使用 SQLite 数据库(如果我是您,我会使用它)。
创建 class 扩展 SQLiteOpenHelper
例如:
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
您可以通过多种方式完成。
- 使用 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"));
- 使用房间
由于 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 ROOM
我正在编写一个需要保存数据的应用程序,以便用户下次进入该应用程序时,他们的进度将被保存。我在想一个数组,其值将随着用户做出选择而更新,这将是实现这一点的最简单方法。我的第一个想法是创建一个具有读写方法的 class 文件,以便所有活动都可以更新和读取数组中的数据,但我认为当应用程序关闭或我发布更新时,该数组不会永久存在.确保我的保存数组在应用程序关闭和未来更新之间永久存在的最佳方法是什么?
你有很多选择来完成这项工作。
首先,您可以使用 SQLite 数据库(如果我是您,我会使用它)。
创建 class 扩展 SQLiteOpenHelper
例如:
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
您可以通过多种方式完成。
- 使用 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"));
- 使用房间
由于 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 ROOM