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