首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getDefaultSharedPreferences(上下文)-有上下文吗?

getDefaultSharedPreferences(上下文)-有上下文吗?
EN

Stack Overflow用户
提问于 2013-12-30 20:15:52
回答 1查看 721关注 0票数 0

用于处理默认共享首选项的我有个帮助班。我只检索一次首选项,并包装我所需的所有SP方法,提供相同的缓存实例。就像:

代码语言:javascript
复制
public final class AccessPreferences {

    private static SharedPreferences prefs; // cache

    private static SharedPreferences getPrefs(Context ctx) {
        // synchronized is really needed or volatile is all I need (visibility)
        SharedPreferences result = prefs;
        if (result == null)
            synchronized (AccessPreferences.class) {
                result = prefs;
                if (result == null) {
                    result = prefs = PreferenceManager
                        .getDefaultSharedPreferences(ctx);
                }
            }
        return result;
    }

    public static boolean contains(Context ctx, String key) {
            if (key == null)
                throw new NullPointerException("Null keys are not permitted");
            return getPrefs(ctx).contains(key);
    }
    //etc
}

我有两个问题想完全肯定:

  • 我是否像我一样需要同步,或者一个简单的易失性就足够了?当然,这个助手类是由不同的线程( UI、意图服务等)访问的。
  • 在检索共享首选项时,是否需要调用ctx.getApplicationContext()

我对Froyo和up感兴趣

EN

回答 1

Stack Overflow用户

发布于 2013-12-31 02:28:54

使用同步,但我建议使用类似于ReentrantLock (http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/ReentrantLock.html)的东西,而不是“同步”。它通常更有表现力。

任何上下文都会工作,当然只要它不是空的。我只需要在这里使用应用程序上下文,这将使调用方不必提供它。公开对它的静态引用,如下所示:静态的方式获得‘上下文’在Android上?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20846812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档