我正在使用parse.com作为Android应用程序的后端。我有几个与“ inBackground”相关的功能需要连续发生,然后将结果发送回我的Activity(用于构建ListView)。我正在寻找一种“干净”的方法来做到这一点,例如编写一个带有从Activity中调用的方法的类。我不知道如何在外部类中做到这一点。以以下代码为例:
List<ParseObject> 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;
}
我相信“ findInBackground”将导致此方法在“结果”设置为正确值之前返回。有什么解决方法?
最佳答案
如果要从函数中获取结果,则必须使用“同步”方法ParseQuery.find(...)而不是“异步” ParseQuery.findInBackground(...)。然后从辅助线程或服务或AsyncTask等调用此函数。
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();