我需要为每个用户保留一组首选项,并为整个应用程序保留另一组首选项。用户保存在SQLite数据库中。
我还将使用PreferenceFragment来显示首选项。
如果我对每个用户使用getSharedPreferences()
而系统使用一个,则首选项片段是否会显示正确的首选项?
或者我应该在我的情况下使用表格:
在这种情况下,最好的练习是什么?
答案 0 :(得分:2)
您可以创建具有与之关联的Userid的多个首选项文件以及前缀。 喜欢: -
import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;
/**
* Created by vikas on 12/14/15.
*/
public class Pref {
private static final String PREF_NAME = "AppName_%s";
private SharedPreferences mPreferences;
private String mUserId;
private static Pref sInstance;
private Pref(Context pContext, String pUserId) {
mUserId = pUserId;
mPreferences = pContext.getSharedPreferences(String.format(PREF_NAME, pUserId), Context.MODE_PRIVATE);
}
public String getUserId() {
return mUserId;
}
public static Pref getPreferences(Context context, String userId) {
if (null != sInstance || !TextUtils.equals(sInstance.getUserId(), userId)) {
sInstance = new Pref(context, userId);
}
return sInstance;
}
//write methods for updating in preference files
}
答案 1 :(得分:0)
SharedPreferences
是存储在手机上的XML
文件。如果您想为多个用户保存多个文件,并且存在用户 - >文件连接,那么您自然会 CAN 这样做。
只需使用用户的唯一标识符命名首选项文件。
其他解决方案是多租户数据库。在该类型的数据库中,每个表都有一个租户ID列,用于从单个表中过滤一个用户的数据。其他所有内容都可以与一个用户相同。
如果需要进一步解释答案,请随时发表评论,我会尽力回答我所知道的问题。