当前位置:  开发笔记 > 编程语言 > 正文

Android:如何使用Parse.com的Bolts同步查询?

如何解决《Android:如何使用Parse.com的Bolts同步查询?》经验,为你挑选了0个好方法。

Parse.com用作我的应用程序的后端.他们还提供了一个本地数据库来存储信息,作为替代SQLite.

我想通过解析将电话号码添加到我的数据库中.在添加数字之前,我需要检查数据中是否已存在该数字,因此我findInBackground()用来获取与我想要添加的数字相匹配的数字列表.如果列表为空,则我想要添加的数字在数据库中不存在.

执行此操作的方法是:

public void putPerson(final String name, final String phoneNumber, final boolean isFav) {

        // Verify if there is any person with the same phone number
        ParseQuery query = ParseQuery.getQuery(ParseClass.PERSON_CLASS);
        query.whereEqualTo(ParseKey.PERSON_PHONE_NUMBER_KEY, phoneNumber);
        query.fromLocalDatastore();
        query.findInBackground(new FindCallback() {
                                   public void done(List personList,
                                                    ParseException e) {
                                       if (e == null) {
                                           if (personList.isEmpty()) {
                                               // If there is not any person with the same phone number add person
                                               ParseObject person = new ParseObject(ParseClass.PERSON_CLASS);
                                               person.put(ParseKey.PERSON_NAME_KEY, name);
                                               person.put(ParseKey.PERSON_PHONE_NUMBER_KEY, phoneNumber);
                                               person.put(ParseKey.PERSON_FAVORITE_KEY, isFav);
                                               person.pinInBackground();

                                               Log.d(TAG,"Person:"+phoneNumber+" was added.");
                                           } else {
                                               Log.d(TAG, "Warning: " + "Person with the number " + phoneNumber + " already exists.");
                                           }
                                       } else {
                                           Log.d(TAG, "Error: " + e.getMessage());
                                       }
                                   }
                               }
        );
    }

然后我调用此方法3次以添加3个数字:

ParseLocalDataStore.getInstance().putPerson("Jack", "0741234567", false);
ParseLocalDataStore.getInstance().putPerson("John", "0747654321", false);
ParseLocalDataStore.getInstance().putPerson("Jack", "0741234567", false);
ParseLocalDataStore.getInstance().getPerson(); // Get all persons from database

请注意,第三个数字与第一个数字相同,不应将其添加到数据库中.但是logcat节目:

12-26 15:37:55.424 16408-16408/D/MGParseLocalDataStore: Person:0741234567 was added.
12-26 15:37:55.424 16408-16408/D/MGParseLocalDataStore: Person:0747654321 was added.
12-26 15:37:55.484 16408-16408/D/MGParseLocalDataStore: Person:0741234567 was added.

第三个数字被添加,即使它不应该这样做,因为fintInBackground()它几乎同时在3个后台线程中运行,所以它会发现数据库中没有像我想要添加的那样的数字.

在这个问题中,一个人告诉我,我应该使用BoltsParse.我从这里和一些Parse博客文章中读到了它,但我不完全理解如何使用我已经拥有的方法,以及如何同步查询要一个接一个地执行.

如果有人使用此库,请指导我如何执行此操作或提供一些基本示例,以便我了解工作流程.

谢谢!

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有