Android将信息保存到设备

时间:2018-07-15 03:20:53

标签: android kotlin

我正在制作一个Android应用程序,并希望为该应用程序中的某些对象创建“收藏夹”列表。我想让我在所有活动中都可以访问和编辑列表,但我真的想不出最好的方法。

共享的首选项?向设备写入一个小的txt文件?最快的方法是什么?

谢谢!

3 个答案:

答案 0 :(得分:1)

您有很多选择来存储数据 Android提供了许多在本地存储数据的方法

  1. 共享首选项

  2. 内部存储

  3. 外部存储

  4. SQLite数据库

您还可以使用firebase / database / Firestore()

  1. Firebase

但是SharedPreeference最常用于小型数据,以下是使用SharedPreeferences的一些详细信息

创建共享首选项

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
Editor editor = pref.edit();

在“首选项”中保存值:

// MY_PREFS_NAME - a static String variable like: 
//public static final String MY_PREFS_NAME = "MyPrefsFile";
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
 editor.putString("name", "Elena");
 editor.putInt("idName", 12);
 editor.apply();

从偏好设置中检索数据:

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
String restoredText = prefs.getString("text", null);
if (restoredText != null) {
  String name = prefs.getString("name", "No name defined");//"No name defined" is the default value.
  int idName = prefs.getInt("idName", 0); //0 is the default value.
}

从SharedPreferences中删除键值

editor.remove("key_name3"); // will delete key key_name3
editor.remove("key_name4"); // will delete key key_name4

// Save the changes in SharedPreferences
editor.commit(); // commit changes

对于大型数据组织,您可以使用SQLite数据库或Firebase。

答案 1 :(得分:0)

dependencies {
    compile 'com.google.code.gson:gson:2.3.1'
}

然后,当您要保存时,将数组转换为String:

    ArrayList<Type> yourData = new ArrayList<Type>();
    String dataStr = new Gson().toJson(yourData);

//put this dataStr in your shared preferences as String

    To retrieve and convert back to an object is also simple:

    String str = "";

//you need to retrieve this string from shared preferences.

    Type type = new TypeToken<ArrayList<Type>>() { }.getType();
    ArrayList<Type> restoreData = new Gson().fromJson(str, type);

答案 2 :(得分:0)

如果要创建收藏夹列表,请使用SQLite数据库。

实际上只有四种存储数据的方式。

  1. 共享首选项

  2. 数据库

  3. 本地文件

  4. 远程服务器-最慢,因为它取决于网络连接,所以我们跳过它。

在其余3个之间,SharedPreferences在用于存储单个值时是一个不错的选择。但是,这不是存储“收藏夹”列表的好选择,主要是因为您只能存储单个String。

您仍然可以通过将列表中的所有项目组合为一个字符串,然后每次将其拆分来存储它。但是,随着“收藏夹”列表变大,该单个长字符串也将变大。一直拆分和合并效率不高。

如果仅需要存储“收藏夹”列表,SharedPreferences仍然是一个不错的选择,但是由于您也希望对其进行编辑,因此它成为一种不太吸引人的解决方案。

本地文件和数据库是更好的选择,但是本地文件要求您每次使用文件时都读入该文件。这种读取和写入文件的过程没有使用数据库有效,尤其是在您要编辑的情况下。例如,假设您要从“收藏夹”列表的中间删除一个项目。这将要求您读入文件,对其进行编辑,然后将更改再次写入文件。与最终解决方案的简便性相比,不太令人满意。

数据库是实现此目的的最佳选择,主要是因为它旨在管理数据。您可以创建一个收藏夹表并将每个项目添加为自己的单独行。提取整个表变得快速而简单。提取单个项目变得快速简便。添加新项目或删除新项目也很容易。

相关问题