为什么要使用Context.MODE_PRIVATE或Context.MODE_WRITABLE?

时间:2012-01-02 02:01:49

标签: java android facebook

我对context.MODE_PRIVATEMODE_READABLE, WRITABLE的理解是,这些函数会为共享偏好创建文件。

我想知道context.getSharedPreferences(KEY, Context.MODE_PRIVATE)getSharedPreferences(KEY, 0);之间有什么区别。

据我所知,

getSharedPreferences从xml文件夹中检索其首选项。 Context.MODE_PRIVATE存储其文件。如果context.getSharedPreferences(KEY, Context.MODE_PRIVATE)getSharedPreferences(KEY, 0)同时生成文件,为什么要使用context.getSharedPreferences(KEY, Context.MODE_PRIVATE)

以下是Facebook API的一部分,我注意到Context.MODE_PRIVATE

public static boolean save(Facebook session, Context context) {
    Editor editor =
        context.getSharedPreferences(KEY, Context.MODE_PRIVATE).edit();
    editor.putString(TOKEN, session.getAccessToken());
    editor.putLong(EXPIRES, session.getAccessExpires());
    return editor.commit();
}
public static boolean restore(Facebook session, Context context) {
    SharedPreferences savedSession =
        context.getSharedPreferences(KEY, Context.MODE_PRIVATE);
    session.setAccessToken(savedSession.getString(TOKEN, null));
    session.setAccessExpires(savedSession.getLong(EXPIRES, 0));
    return session.isSessionValid();
}

1 个答案:

答案 0 :(得分:8)

根据javadoc,没有Context.MODE_WRITABLEContext.MODE_READABLE。所以我假设你在谈论Context.MODE_WORLD_WRITABLEContext.MODE_WORLD_READABLE。 (并不是说这实际上与你的问题相关......)


  

我想知道

之间有什么区别
    context.getSharedPreferences(KEY, Context.MODE_PRIVATE)
     

    context.getSharedPreferences(KEY, 0);

没有功能差异。 Context.MODE_PRIVATEint常量,值为零;有关详细信息,请参阅上面链接的javadoc。前者更具可读性,从代码风格的角度来看,这更为可取。