Android 解析:一次从不同的表中检索所有数据

Android 解析:一次从不同的表中检索所有数据,android,asynchronous,parse-platform,Android,Asynchronous,Parse Platform,我试图从不同的表中提取所有数据,因此我尝试使用这种方法。但是,我知道for循环是同步的,因此在解析获取数据时循环没有停止。有人知道怎么解决吗?是否有任何解析方法或一些意图服务可以帮助这种情况 private void getAllInformation(){ String controlName; for(int i=0; i<3;i++){ if(i==0){ controlName = AppConfiguration.strEv

我试图从不同的表中提取所有数据,因此我尝试使用这种方法。但是,我知道for循环是同步的,因此在解析获取数据时循环没有停止。有人知道怎么解决吗?是否有任何解析方法或一些意图服务可以帮助这种情况

private void getAllInformation(){
    String controlName;
    for(int i=0; i<3;i++){
        if(i==0){
            controlName = AppConfiguration.strEvent;
        }
        else if(i==1){
            controlName = AppConfiguration.strStore;
        }
        else if (i==2){
            controlName = AppConfiguration.strPromotion;
        }
        else{
            return;
        }

        ParseQuery<ParseObject> query = ParseQuery.getQuery(controlName);
        query.findInBackground(new FindCallback<ParseObject>() {
            public void done(List<ParseObject> objectList, ParseException e) {
                if(e!=null){
                    Toast.makeText(getApplicationContext(),"Error Loading.Please Try Again",Toast.LENGTH_LONG ).show();
                    return;
                }
                if (objectList!= null) {
                    Toast.makeText(getApplicationContext(),"Success",Toast.LENGTH_LONG ).show();
                    ParseObject.pinAllInBackground(objectList);
                }
                else{
                    Toast.makeText(getApplicationContext(),"Some Data is null!",Toast.LENGTH_LONG ).show();
                }


            }

        });

     }


//        getAllOfflineInformation();
}
private void getAllInformation(){
字符串控制名;
对于(int i=0;i您可以使用锁:

Object lock = new Object();

ParseQuery<ParseObject> query = ParseQuery.getQuery(controlName);
        query.findInBackground(new FindCallback<ParseObject>() {
            public void done(List<ParseObject> objectList, ParseException e) {
  synchronized (lock) {
            lock.notifyAll();
        }
                if(e!=null){
                    Toast.makeText(getApplicationContext(),"Error Loading.Please Try Again",Toast.LENGTH_LONG ).show();
                    return;
                }
                if (objectList!= null) {
                    Toast.makeText(getApplicationContext(),"Success",Toast.LENGTH_LONG ).show();
                    ParseObject.pinAllInBackground(objectList);
                }
                else{
                    Toast.makeText(getApplicationContext(),"Some Data is null!",Toast.LENGTH_LONG ).show();
                }


            }

        });

 synchronized (lock) {
    lock.wait();
}
对象锁=新对象();
ParseQuery=ParseQuery.getQuery(controlName);
findInBackground(新的FindCallback(){
public void done(List objectList,parsee异常){
已同步(锁定){
lock.notifyAll();
        }
如果(e!=null){
Toast.makeText(getApplicationContext(),“加载错误。请重试”,Toast.LENGTH\u LONG.show();
返回;
}
if(objectList!=null){
Toast.makeText(getApplicationContext(),“Success”,Toast.LENGTH_LONG.show();
pinAllInBackground(objectList);
}
否则{
Toast.makeText(getApplicationContext(),“某些数据为空!”,Toast.LENGTH\u LONG.show();
}
}
});
已同步(锁定){
lock.wait();
}

一次性加载整个数据集的错误做法