美文网首页
Context.getSharedPreferences 与 A

Context.getSharedPreferences 与 A

作者: js8421 | 来源:发表于2018-06-05 16:24 被阅读0次

Context.getSharedPreferences

getSharedPreferences 为 Context 的成员方法,需要参数 name 和 mode

先说 mode 参数,SharedPreferences 推荐仅在自己应用内使用,所以一般默认使用 Context.MODE_PRIVATE

再说 name 参数,系统会在 data/data/your.package.name/shared_prefs/ 路径下创建对应 ${name}.xml 文件作为 SharedPreferences 的存储

getSharedPreferences 具有缓存机制,相关部分源码如下

package android.app;

class ContextImpl extends Context {
  // String key 为包名
  // value 为该包名下,${name}.xml 文件与 SharedPreferencesImpl 实现实例的映射
  private static ArrayMap<String, ArrayMap<File, SharedPreferencesImpl>> sSharedPrefsCache;

  // String key 为 SharedPreferences 的 name 参数
  // value 为对应 ${name}.xml 文件
  private ArrayMap<String, File> mSharedPrefsPaths;
}

getSharedPreferences 的流程为:

  1. 在 mSharedPrefsPaths 中根据 name 获取 file 缓存,不存在则在 data/data/your.package.name/shared_prefs/ 路径下创建对应 ${name}.xml 文件并缓存

  2. 在 sSharedPrefsCache 中根据 file 获取 SharedPreferences 缓存,不存在则创建 new SharedPreferencesImpl(file, mode) 并缓存

Activity.getPreferences

getPreferences 为 Activity 的成员方法,为单参方法,需要 mode 参数,基于 getSharedPreferences 实现,name 参数为 Activity 类名(由 Activity.getLocalClassName() 给出)

使用情景

可以将 SharedPreferences 分为两种:单一 activity 使用和跨 activity 使用

单一 activity 使用的例子为:某 activity 的页面元素新功能提示红点,仅在当前 activity 使用,出于逻辑的最小可见性考虑和 SharedPreferences 懒加载缓存机制,推荐使用 Activity.getPreferences 存取

跨 activity 使用的例子为:登录页面存储登陆方式,个人信息页面读取显示登陆方式,推荐使用 Context.getSharedPreferences 存取,最好全应用统一使用工具方法 PreferenceManager.getDefaultSharedPreferences(context) 获取 SharedPreferences 并将 preference key 存放于获取并使用该配置的地方,如上例中的人信息页面

工具方法 PreferenceManager.getDefaultSharedPreferences(context) 基于 getSharedPreferences 实现, name 参数为 ${包名}_preferences (由 PreferenceManager.getDefaultSharedPreferencesName(Context context) 给出),mode 参数为 Context.MODE_PRIVATE

相关文章

  • Context.getSharedPreferences 与 A

    Context.getSharedPreferences getSharedPreferences 为 Conte...

  • && 与& ,||与|

    回忆知识点i++,,++i变量在前 先用变量符号(☞++/--)在前 先计算

  • 认真与身板

    认真与身板 认真与态度 认真与自信 认真与信心 认真与诚心 认真与正心 认真与正念 认真与正面 认真与精诚 认真与...

  • 与荒野,与你,与自己

    周末了,想跟大家分享一首诗 《阿莱夫》 诗作者:赖尔逊 阿莱夫在草原上盖了一栋房子, 犹如大海上的灯塔。 但你无法...

  • 与雪与丘与故土

  • 与海与浪与念

    木君 下午,在一段段风雨的催促下来到了绥中。天是被蒙起来的,太阳早已不知躲到哪里去了。微弱的日光和着轻柔的海风洒在...

  • 晚风与柳 孤独与狗 桥与落叶 马与白隙 云与苍天 梭与星月 天与地 生与死 树与来路 花与过往 我与你 爱与恨 夜色与酒

  • 海街日记

    和解。与他人和解、与家人和解、与自己和解;与得到和解、与失去和解;与过去和解、与现在、未来和解;与现实和解、与虚幻...

  • 生怕忘了的题目

    少与不少 多与不多 苦与不苦 乐与不乐 对与不对 错与不错 离与不离 合与不合 唱与不唱 说与不说

  • 2017-04-11

    体验入:真诚.与专业。幽默与风趣。赞美与了解。认可与相信。沟通与关注。关心与引领。快乐与持续。简单与重复。 ...

网友评论

      本文标题:Context.getSharedPreferences 与 A

      本文链接:https://www.haomeiwen.com/subject/ojnpsftx.html