Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在继续代码之前,确保Parse已执行后台操作_Java_Android_Parse Platform - Fatal编程技术网

Java 在继续代码之前,确保Parse已执行后台操作

Java 在继续代码之前,确保Parse已执行后台操作,java,android,parse-platform,Java,Android,Parse Platform,我正在使用parse.com作为Android应用程序的后端。我有几个与“后台”相关的函数,这些函数需要连续执行,然后将结果发送回我的活动,我使用这些活动构建一个ListView。我正在寻找一种“干净”的方法来实现这一点,比如编写一个包含从我的活动中调用的方法的类。不过,我不知道如何在外部类中实现这一点。以以下代码为例: List<ParseObject> list = ParseUtility.getList(); List List=ParseUtility.getList()

我正在使用parse.com作为Android应用程序的后端。我有几个与“后台”相关的函数,这些函数需要连续执行,然后将结果发送回我的活动,我使用这些活动构建一个ListView。我正在寻找一种“干净”的方法来实现这一点,比如编写一个包含从我的活动中调用的方法的类。不过,我不知道如何在外部类中实现这一点。以以下代码为例:

List<ParseObject> list = ParseUtility.getList();
List List=ParseUtility.getList();
我们将把getList()定义为

private List<ParseObject> result;

public List<ParseObejct> getList() {
    ParseQuery<ParseObject> query = ParseQuery.getQuery(TABLE_NAME);
    query.whereEqualTo(KEY, VALUE);
    query.findInBackground(new FindCallback<ParseObject>() {
        public void done(List<ParseObject> list, ParseException e) {
            if (e == null) {
                result = list;
            } else {
                result = null;
            }
        }
    });
    return result;
}
私有列表结果;
公共列表getList(){
ParseQuery=ParseQuery.getQuery(表名称);
查询。whereEqualTo(键,值);
findInBackground(新的FindCallback(){
公共作废完成(列表,异常解析){
如果(e==null){
结果=列表;
}否则{
结果=空;
}
}
});
返回结果;
}

我相信“findInBackground”会导致该方法在“result”设置为正确值之前返回。解决方法是什么?

如果要从函数中获取结果,必须使用“同步”方法ParseQuery.find(…)而不是“异步”ParseQuery.findInBackground(…)。然后从工作线程、服务或异步任务等调用此函数

public static List<ParseObejct> getList() {
    ParseQuery<ParseObject> query = ParseQuery.getQuery(TABLE_NAME);
    query.whereEqualTo(KEY, VALUE);
    result = query.find();
}


 new AsyncTask<Void, Void, List<ParseObject>>() {

   @Override
   protected List<ParseObject> doInBackground(Void... params)
   {
       return ParseUtility.getList();
   }
 }.execute();
公共静态列表getList(){
ParseQuery=ParseQuery.getQuery(表名称);
查询。whereEqualTo(键,值);
结果=query.find();
}
新建异步任务(){
@凌驾
受保护列表doInBackground(无效…参数)
{
返回ParseUtility.getList();
}
}.execute();

您是否尝试将return语句放入回调中?如果不是result=list,而是将return list(和return null)放入。。。?