根据日历中的天数存储多个SharedPreferences

时间:2016-04-18 10:23:21

标签: android service sharedpreferences

您好,我想存储和检索每天的温度读数。我对Android很新,为此我使用了一项服务。首先,我检查是否有任何先前存储的共享首选项并加载它们。摘录如下:

public void onCreate() {
        Log.i(TAG, "Service onCreate");
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
        if(prefs.contains("old_data")){
            SharedPreferences prefs2 = PreferenceManager.getDefaultSharedPreferences(this);
            String json = prefs2.getString("old_data","");
            TypeToken<ArrayList<Float>> token = new TypeToken<ArrayList<Float>>() {};
            ArrayList<Float> oldValues = new Gson().fromJson(json,token.getType());
            LineChartActivity.PlaceholderFragment.generateValues(oldValues) ;}


             isRunning = true;
    }

稍后,我使用以下代码段加载新数据:

@Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        Log.i(TAG, "Service onStartCommand");

       //code to retrieve temperature
            String json = new Gson().toJson(tempValueC);    
            SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
            prefs.edit().putString("old_data",json).commit();              


}

上述代码存储温度读数,然后加载先前存储的读数并覆盖新读数。

我想分别存储每天的温度读数(我已经包含了一个日历)。所以,我正在寻找合适的方法来继续。任何形式的帮助都表示赞赏。

2 个答案:

答案 0 :(得分:0)

如果你真的想使用SharedPreferences而不想使用数据库......

你可以这样做......

String todayDate;
prefs.edit().putString(todayDate+"old_data",json).commit();

每次当json返回数据并且今天日期将会改变时,您的温度读数将分别存储在每一天。

答案 1 :(得分:0)

您可以向SharedPreferences写一个StringSet。 (仅适用于HONEYCOMB以上的Android版本)

This library会让SharedPreference类的使用更加简单。

使用示例:

// putStringSet is supported only for android versions above HONEYCOMB
SharedPreferencesHelper sph; 
sph = new SharedPreferencesHelper(this); //this will use default shared preferences
Set name = new HashSet();
name.add("Viral");
name.add("Patel");
sph.putStringSet("name", name)