您好,我想存储和检索每天的温度读数。我对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();
}
上述代码存储温度读数,然后加载先前存储的读数并覆盖新读数。
我想分别存储每天的温度读数(我已经包含了一个日历)。所以,我正在寻找合适的方法来继续。任何形式的帮助都表示赞赏。
答案 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)