解析App的本地商店

时间:2015-06-24 18:50:54

标签: android database parse-platform

您好我正在做一个有3种不同解析类的Android应用程序。有没有办法将这些类的所有信息存储在本地数据存储中,并在每次应用程序打开时同步它们? (我只需要从服务器读取信息,应用程序不会更改数据库的任何信息。)此外,我必须在所有活动中初始化本地数据存储,或者只在我获取信息的那个中初始化本地数据存储从服务器?代码样本将不胜感激。 (我已经阅读了parse.com上的文档,但我仍然对本地数据存储的工作原理感到困惑。)

由于

1 个答案:

答案 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;
        }
    };

希望这有帮助