我的活动中有两个查询,并且想知道它们是一个接一个地执行还是同时执行,因为第二个查询返回一个空列表。在我的第一个查询中,我使用objectId检索ParseObject,然后将其设置为类变量。在我的第二个查询中,我使用我设置的ParseObject来查找" Answers"中的所有对象。 class(" Question"是指向Question"类中对象的指针)。但是,似乎第二个查询已经启动,因此它返回一个空的对象列表,因为第一个查询中的ParseObject尚未设置。如何让查询一个接一个地运行,以便首先设置变量?或者还有另一种解决这个问题的方法吗?
ParseObject question;
ParseQuery<ParseObject> query = ParseQuery.getQuery("Question");
query.getInBackground(questionId, new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
if(e==null){
question = object;
} else {
System.out.println(e);
}
}
});
ParseQuery<ParseObject> answerQuery = ParseQuery.getQuery("Answers");
answerQuery.whereEqualTo("Question", question);
answerQuery.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> answers, ParseException e) {
if(e==null){
} else {
System.out.println(e);
}
}
});
答案 0 :(得分:1)
是的,这是在后台线程中完成的。您需要使answerQuery
查找取决于question
查找的完成情况。您可以创建另一种方法来执行答案查找,如下所示。
ParseQuery<ParseObject> query = ParseQuery.getQuery("Question");
query.getInBackground(questionId, new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
if(e==null){
queryAnswers(object);
} else {
System.out.println(e);
}
}
});
private void queryAnswers(ParseObject question) {
ParseQuery<ParseObject> answerQuery = ParseQuery.getQuery("Answers");
answerQuery.whereEqualTo("Question", question);
answerQuery.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> answers, ParseException e) {
if(e==null){
// do what you want with the answers...
} else {
System.out.println(e);
}
}
});
}