0

私は2つのParse.comクエリを作成していました..

ABC.findInBackground(new FindCallback<ParseObject>()
 {
 ...
 }
DEF.findInBackground(new FindCallback<ParseObject>()
 {
 ...
 }

そして私は本質的にこれをやろうとしました、

CountDownLatch waitForBoth = new CountDownLatch(2);

ABC.findInBackground(new FindCallback<ParseObject>()
 {
 ...
 waitForBoth.countDown();
 }
DEF.findInBackground(new FindCallback<ParseObject>()
 {
 ...
 waitForBoth.countDown();
 }
 // (error handling (just a flag) not shown)

waitForBoth.await();
Log("both are finished yay!");

もちろん、私は雑多なエラーIllegalMonitorStateException: object not locked by thread before wait()などを取得します。

私が密集していること以外の問題の一部は、Parse の findInBackground へのこれらの呼び出しが、とにかく新しいスレッドであなたを離陸させることですよね?

記録のために、これらの Parse 呼び出しの 1 つが次のようになります。

ParseQuery<ParseObject>PQ = ParseQuery.getQuery("SomeTable");

PQ.whereEqualTo("SomeColumn", ParseUser.getCurrentUser());
PQ.include("SomeOtherColumn");

PQ.findInBackground(new FindCallback<ParseObject>()
{
@Override
public void done(List<ParseObject> res, ParseException e)
  {
  if (e == null)
    {
    // res is the List of ParseObject results from the cloud
    // here, you'd basically...
    waitForBoth.countDown();
    }
  else
    {
    int errCodeSimple = e.getCode();
    exampleWoeFlag = false;
    waitForBoth.countDown();
    }
  }
});
}

そしてそのドコ…

http://parse.com/docs/android/api/com/parse/ParseQuery.html#findInBackground(com.parse.FindCallback)

4

1 に答える 1