public void onClick(View v) {
dialog.show();
getTheMarkerId();
markerisfalseortrue(0);
dialog.hide();
cdd.dismiss();
}
});
这是第一项任务: getTheMarkerId()
queryfindmarkerid.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> parseObjects, ParseException e) {
for (int i = 0; i<parseObjects.size(); i++)
{
if (parseObjects.get(i).getInt("longit") == themarkerlongitude && parseObjects.get(i).getInt("latit") == themarkerlatitude)
{
themarkerid = parseObjects.get(i).getObjectId();
}
}
}
});
这是第二个任务 - markerisfalseortrue(int i)
if (i == 0)
{
queryfindmarkerid.getInBackground( themarkerid, new GetCallback<ParseObject>() {
public void done(ParseObject gameScore, ParseException e) {
if (e == null) {
nowscore = gameScore.getInt("false");
gameScore.put("false", nowscore +1 );
gameScore.saveInBackground();
}
}
});
问题是: 此查询具有出色的网络连接。你必须等到它完成。 我怎么能等到第一个任务完成。
答案 0 :(得分:1)
将方法调用markerisfalseortrue(0);
放在getTheMarkerId()方法的done方法中。这样,markerisfalseortrue()方法将在第一次网络调用完成后才会运行。
这是一种常见的模式,要记住使用Parse查询方法及其回调 - 如果您需要发出第二个请求,或执行一些只能在第一次网络调用完成后才能完成的操作,请激活该操作。完成第一次网络呼叫的方法。