Parse.com - query.find()和query.findinBackground()之间的差异

时间:2016-05-26 07:09:31

标签: android parse-platform

在我的项目中,我只使用query.find()中的Asynctask函数来管理我的数据,例如:

    protected Void doInBackground(Void... params)
    {
        String tipo,data;
        int stato;

        ParseObject object = ParseObject.createWithoutData("Status",id);
        query= ParseQuery.getQuery("Documenti");
        query.whereEqualTo("user", ParseUser.getCurrentUser());
        query.whereEqualTo("documentgenerated",object);

        try
        {
            results = query.find();
            counter = results.size();

            if(counter != 0)
            {
                for (int i = 0; i<results.size(); i++)
                {
                 date = results.get(i).getCreatedAt();
                 tipo = results.get(i).getString("topologia");
                 stato = results.get(i).getInt("stato");


                        ParseFile fileObject = (ParseFile) results.get(i).get("file");
                        uri= Uri.parse(fileObject.getUrl());
                        card.add(new DocumentType(data,certificate,uri));


                }

            }

它运作良好。但我知道还有这个功能:

 query.findInBackground(new FindCallback<ParseObject>() {
                        @Override
                        public void done(List<ParseObject> list, ParseException e) {

                        }
                    });



        }
        catch (ParseException e)
        {
            e.printStackTrace();
        }


        return null;
    }

我想问你query.find()Asynctask函数中findInBackground()之间是否存在差异,或者这些函数在后台执行相同的工作(特别是如果findInBackground()有效作为Service)。

感谢您的回答。

1 个答案:

答案 0 :(得分:1)

findInBackground()在新的后台线程中执行(不是服务只是一个线程),因为你已经在后台线程中不需要调用findInBackground(),除非你有一些特定的要求和你需要多个线程......

所以你可以从主线程中使用findInBackground()并删除asynTask,或者如果你有必须在后台线程中执行的其他预处理或后期处理,你可以在asyTask中使用find()