将用户数据放在SharedPreferences或SQLite中更好吗?

时间:2015-05-22 13:40:02

标签: android

我正在创建一个能够登录的应用程序。每次用户登录时,应用程序都会检索用户数据并将其保存在本地,以便每次用户需要执行需要用户信息的操作时,应用程序无需再次检索它。将它放在SharedPreferences或SQLite中会更好吗?

由于它总是只需要存储一个用户数据,我认为将它放在SharedPreferences中,但它使我的应用程序拥有如此多的键值数据。我也可以使用SQLite。但是,拥有一个始终只在表中有一个记录数据的数据库看起来很尴尬。

将一个记录数据放入数据库并在数据更改后继续替换它是一种好习惯吗?或者将它放在共享首选项中更好,并使SharedPreferences有点乱,因为它有许多键值数据。

5 个答案:

答案 0 :(得分:1)

我认为SharedPreferences是存储个人资料数据的最佳方式.... 在SharedPreferences中,我们也可以替换存储的数据。

public class SharedPref {

private SharedPreferences pref;
private Editor editor;
private Context context;

int PRIVATE_MODE = 0;

// Sharedpref file name
private static final String PREFER_NAME = "SharedPreferences";

// All Shared Preferences Keys
private static final String IS_USER_LOGIN = "IsUserLoggedIn";

@SuppressLint("CommitPrefEdits")
public SharedPref(Context context){
    this.context = context;
    this.pref = context.getSharedPreferences(PREFER_NAME, PRIVATE_MODE);
    this.editor = pref.edit();
}

//Set current tab position 
public void setCurrentTab(String currentTab) {
    editor.putString(Constant.TabActivity.CURRENT_TAB,currentTab);
    editor.commit();
}

public void setTabActivityTitle(String title) {
    editor.putString(Constant.TabActivity.TAB_ACTIVITY_TITLE,title);
    editor.commit();
}



public String getSessionValue(String key) {
        return pref.getString(key, null);
    }
}

答案 1 :(得分:1)

完全取决于您要存储的数据。我个人建议你存储在共享偏好中。 SQLite用于存储大型结构化和有组织数据,其中共享偏好用于存储小型非结构化数据,如登录信息,用户首选项等。

答案 2 :(得分:1)

我会为你的场景使用SharedPreferences。

如果您有多个用户配置文件,数据库会很好,但由于您只想存储一个用户配置文件,因此仅为一行创建数据库没有意义。

答案 3 :(得分:0)

<强> SQLite的

大量相同的结构化数据应该存储在SQLite数据库中,因为数据库是为这种数据设计的。由于数据由数据库构建和管理,管理和搜索大量数据会影响性能,因此从数据库读取数据可能比从SharedPreferences读取数据要慢。

<强> SharedPreferences

SharedPreferences是一个键/值存储,您可以在其中保存特定键下的数据。要从商店读取数据,您必须知道数据的密钥。这使得读取数据非常容易。但就像存储少量数据一样简单..

答案 4 :(得分:0)

你不应该既不使用SQLite也不使用SharedPreferences,事情是,android为你做了,你应该做一些叫做AccountManager

的东西

为什么要这样做: 此类提供对用户在线帐户的集中注册表的访问。用户每个帐户输入一次凭据(用户名和密码),通过“一键”批准授予应用程序访问在线资源的权限。

  

您可以在此处阅读此课程:http://developer.android.com/reference/android/accounts/AccountManager.html

但您应该知道的是,您还可以删除帐户,因此对您来说特别有用,这里有教程分步http://www.finalconcept.com.au/article/view/android-account-manager-step-by-step-2