繁体   English   中英

SharedPreferences 是外部存储还是内部存储?

[英]SharedPreferences is external or internal storage?

其实这个问题是在面试的时候问的。 首先,Interviewer问了SharedPreference是一种存储方式,然后是外部存储还是内部存储。 我完全糊涂了,因为

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

共享首选项是内部存储。

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

Share 首选项就像键值对一样,它将数据保存在内存中,最后由系统保存到内部文件存储中。

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

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

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

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

任何人或任何东西(机器人等)都无法访问共享首选项,因为它是内部应用程序存储。 这也是您可以在其中存储某些类型的原因。 但是,这并不意味着您的手机中不存在该文件。 正如@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);
  • 共享首选项:将私有原始数据存储在键值对中。
  • 内部文件存储:将应用程序私有文件存储在设备文件系统上。
  • 外部文件存储:将文件存储在共享的外部文件系统上。 这通常用于共享用户文件,例如照片。
  • 数据库:将结构化数据存储在私有数据库中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM