Android 使用 JSON 保存应用数据
来源:互联网 发布:hbase数据库设计原则 编辑:程序博客网 时间:2024/06/06 03:56
如题。假设有一个 Task 类保存了用户的任务(内容、日期、是否解决),ListView 负责列出Task列表。应用退出后,使用 JSON 格式保存用户的Task列表,应用启动后恢复出来。JSON 数据保存在应用的私有存储区。比如开头是这样的:
public class TaskListFragment extends ListFragment {
private ArrayList<Task> mTasks;
我们在onCreate中设置 mTasks = loadTasks(); 在onPause中 saveTasks();
于是就有这些代码:
public class TaskListFragment extends ListFragment {
private ArrayList<Task> mTasks;
我们在onCreate中设置 mTasks = loadTasks(); 在onPause中 saveTasks();
于是就有这些代码:
private Task toTask(JSONObject j) throws JSONException{ return new Task(j.getString("Context"),j.getLong("Date"),j.getBoolean("Solve"));}private JSONObject toJSON(Task t) throws JSONException{ JSONObject j = new JSONObject(); j.put("Context",t.getContext()); j.put("Date",t.getDate()); j.put("Solve",t.isSolved()); return j;}private void saveTasks(){ Writer w = null; try{ OutputStream out = getActivity().openFileOutput("tasks.json", Context.MODE_PRIVATE); w = new OutputStreamWriter(out); JSONArray ja = new JSONArray(); for (Task t : mTasks){ ja.put(toJSON(t)); } w.write(ja.toString()); } catch(Exception e){} finally { if(w!=null) try{w.close();}catch(Exception e){} }}private ArrayList<Task> loadTasks(){ ArrayList<Task> tasks = new ArrayList<>(); BufferedReader r = null; try { r = new BufferedReader(new InputStreamReader(getActivity().openFileInput("tasks.json"))); StringBuilder sb = new StringBuilder(); String line = r.readLine(); while(line !=null){ sb.append(line); line = r.readLine(); } JSONArray ja = (JSONArray)new JSONTokener(sb.toString()).nextValue(); for(int i=0;i<ja.length();i++) tasks.add(toTask(ja.getJSONObject(i))); } catch (FileNotFoundException e) { return tasks; } catch(Exception e){} finally { if (r != null) try{r.close();}catch(Exception e){} } return tasks;}
我最无法忍受的就是 close 方法会抛出异常,finally 中我还要再嵌套一个try-catch。 无语。
1 0
- Android 使用 JSON 保存应用数据
- Android 通过JSON保存数据
- android SharedPreferences保存应用数据
- android中Json数据保存方式
- android 保存Json数据到本地
- Android使用SQLite保存数据
- Android中JSON数据使用
- Android编程心得-使用Application类保存应用的全局数据
- Android编程心得-使用Application类保存应用的全局数据
- Unity 使用JSON实现本地数据保存和读取
- JSON数据与JSON在android中的应用
- Json数据与Json在android开发中的应用
- Android使用SharedPreferences保存数据实例
- android使用sharepreference保存用户操作数据
- Android --使用SharedPreferences保存和获取数据
- android 使用SharedPreferences保存list数据
- Android开发---使用SharedPreferences保存数据
- Android使用sd卡保存读取数据
- 对JAVASCRIPT匿名函数的理解(透彻版)
- 5-37 模拟EXCEL排序
- c++跨文件变量声明
- NYOJ 353 Dungeon Master【BFS】
- 第二章.一切都是对象之基本类型【主数据类型】数组
- Android 使用 JSON 保存应用数据
- thinkphp中无法解析__PUBLIC__ 模板常量
- 利用dp计算方案数(hdu 5763 ( Another Meaning ) )
- Java产生验证码除去特定值
- LintCode之二分查找
- Oracle中表的几种类型
- 应用层常用协议
- tjut 2669
- 【英语】七月,英语像喝水般自然