diff --git a/src/net/micode/notes/gtask/data/Task.java b/src/net/micode/notes/gtask/data/Task.java index 6a19454..086e791 100644 --- a/src/net/micode/notes/gtask/data/Task.java +++ b/src/net/micode/notes/gtask/data/Task.java @@ -176,25 +176,27 @@ public class Task extends Node { } public void setContentByLocalJSON(JSONObject js) { + // 检查传入的js对象是否为空,或者js对象中是否包含GTaskStringUtils.META_HEAD_NOTE和GTaskStringUtils.META_HEAD_DATA键 if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE) || !js.has(GTaskStringUtils.META_HEAD_DATA)) { Log.w(TAG, "setContentByLocalJSON: nothing is avaiable"); } - try { + try {// 从js对象中获取note对象 JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); JSONArray dataArray = js.getJSONArray(GTaskStringUtils.META_HEAD_DATA); - + / 检查note对象的NoteColumns.TYPE的值是否等于Notes.TYPE_NOTE if (note.getInt(NoteColumns.TYPE) != Notes.TYPE_NOTE) { Log.e(TAG, "invalid type"); return; } - + // 遍历dataArray中的每个元素,获取每个元素的值 for (int i = 0; i < dataArray.length(); i++) { JSONObject data = dataArray.getJSONObject(i); if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) { + // 如果DataColumns.MIME_TYPE的值等于DataConstants.NOTE,则从data对象中获取DataColumns.CONTENT的值,并设置给setName方法 setName(data.getString(DataColumns.CONTENT)); - break; + break;// 找到后跳出循环,防止继续遍历其他元素 } } @@ -206,18 +208,19 @@ public class Task extends Node { public JSONObject getLocalJSONFromContent() { String name = getName(); - try { + try {// 判断是否存在元信息,如果不存在则认为是新创建的任务 if (mMetaInfo == null) { // new task created from web if (name == null) { Log.w(TAG, "the note seems to be an empty one"); return null; } - + //创建对象 JSONObject js = new JSONObject(); JSONObject note = new JSONObject(); JSONArray dataArray = new JSONArray(); JSONObject data = new JSONObject(); + //将对象加入不同方法中 data.put(DataColumns.CONTENT, name); dataArray.put(data); js.put(GTaskStringUtils.META_HEAD_DATA, dataArray); @@ -226,22 +229,26 @@ public class Task extends Node { return js; } else { // synced task + // 同步任务,获取元信息中的note和dataArray对象 JSONObject note = mMetaInfo.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); JSONArray dataArray = mMetaInfo.getJSONArray(GTaskStringUtils.META_HEAD_DATA); for (int i = 0; i < dataArray.length(); i++) { + // 获取当前元素的值,并判断其类型是否为笔记类型 JSONObject data = dataArray.getJSONObject(i); if (TextUtils.equals(data.getString(DataColumns.MIME_TYPE), DataConstants.NOTE)) { + // 如果类型为笔记类型,则将名称放入该data对象的CONTENT键中,并跳出循环 data.put(DataColumns.CONTENT, getName()); break; } } - + // 将note的TYPE键的值设置为笔记类型,并返回元信息对象mMetaInfo note.put(NoteColumns.TYPE, Notes.TYPE_NOTE); return mMetaInfo; } } catch (JSONException e) { Log.e(TAG, e.toString()); + // 如果在处理过程中出现JSON解析异常,打印错误日志并输出异常堆栈信息,最后返回空对象 e.printStackTrace(); return null; }