SharedPreferences是外部还是内部存储?

时间:2019-07-17 10:48:01

标签: java android

实际上,这个问题是在采访中提出的。首先,Interviewer询问SharedPreference是一种存储方法,然后是外部或内部存储位置。我完全感到困惑,因为

我已经在android中研究了四种类型的商店数据。

5 个答案:

答案 0 :(得分:1)

共享的首选项是内部存储。

答案 1 :(得分:0)

好吧,共享首选项最后也保存在内部文件存储中。

共享首选项如键值对,它将数据保留在内存中,并最终由系统保存到内部文件存储中。

答案 2 :(得分:0)

如果您以这种方式创建它:

SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();

实际上它在内部存储中,这是它保存在下面的路径:

/data/data/PACKAGE_NAME/shared_prefs/MY_PREFS_NAME.xml

答案 3 :(得分:0)

任何人或任何事物(机器人等)都不能访问共享首选项,因为它是内部应用程序存储。这就是为什么您可以在其中存储某些类型的原因。但是,这并不意味着该文件在您的手机中不存在。正如@Ali指出的那样,它存在于这里:

/data/data/PACKAGE_NAME/shared_prefs/MY_PREFS_NAME.xml

如果您的SharedPreferences名为 MY_PREFS_NAME 。您还会注意到,它们是存储它的不同类型,如MODE_PRIVATE,MODE_APPEND等。有关更多信息,请参见此链接(它详细介绍了所有模式):https://developer.android.com/reference/android/content/Context

还有共享的首选项:https://developer.android.com/reference/android/content/SharedPreferences

获得它的方法是:

SharedPreferences storage = getSharedPreferences(MY_PREFS_NAME, Context.MODE_PRIVATE);
storage.putString(ID, VALUE);
storage.apply(); //Same the Value

这是如果您想从共享首选项(内部存储)中获取一个值。如果您想存储任何内容,请执行以下操作(@Ali已经写过此内容):

SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.getString(ID, VALUE_TO_RETURN_IF_KEY_NOT_FOUND);

答案 4 :(得分:0)

  • 共享首选项:将私有原始数据存储在键值对中。
  • 内部文件存储:将应用程序专用文件存储在设备文件系统上。
  • 外部文件存储:将文件存储在共享的外部文件系统上。通常用于共享用户文件,例如照片。
  • 数据库:将结构化数据存储在私有数据库中。