您好我正在做一个有3种不同解析类的Android应用程序。有没有办法将这些类的所有信息存储在本地数据存储中,并在每次应用程序打开时同步它们? (我只需要从服务器读取信息,应用程序不会更改数据库的任何信息。)此外,我必须在所有活动中初始化本地数据存储,或者只在我获取信息的那个中初始化本地数据存储从服务器?代码样本将不胜感激。 (我已经阅读了parse.com上的文档,但我仍然对本地数据存储的工作原理感到困惑。)
由于
答案 0 :(得分:1)
是的,您可以将与每个类相关的所有数据作为应用程序内的本地存储,并且您可以将数据与服务器同步。
为此,您需要在项目中添加Parse.enableLocalDatastore(getApplicationContext());
在Parse.com推荐的其他属性中创建一个Application类,例如Parse.initialize(this, "YOUR_APP_ID", "YOUR_CLIENT_KEY");
所以这是一次性的事情,本地数据存储将工作。
但是要保存特定于每个类的数据,您需要从Parse数据库查询数据并将其固定到本地数据库。
基本上就像这样发生
saveButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
todo.setTitle(todoText.getText().toString());
todo.setDraft(true);
todo.setAuthor(ParseUser.getCurrentUser());
todo.pinInBackground(TodoListApplication.TODO_GROUP_NAME,
new SaveCallback() {
@Override
public void done(ParseException e) {
if (isFinishing()) {
return;
}
if (e == null) {
setResult(Activity.RESULT_OK);
finish();
} else {
Toast.makeText(getApplicationContext(),
"Error saving: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
});
}
});
要仅同步最新数据,您需要有一个标记来识别您的类中是否已同步该数据。(如本示例中的todo.setDraft(true);
)。
TodoListApplication.TODO_GROUP_NAM
是唯一的常量,用于标识每个本地表的特定类。由于这是保存在本地数据存储中,现在即使没有网络连接也可以查询以检索数据。
ParseQueryAdapter.QueryFactory<Todo> factory = new ParseQueryAdapter.QueryFactory<Todo>() {
public ParseQuery<Todo> create() {
ParseQuery<Todo> query = Todo.getQuery();
query.orderByDescending("createdAt");
query.fromLocalDatastore();
return query;
}
};
希望这有帮助