我正在使用Parse库查询来自DB的一些记录,这些记录将在带有自定义适配器的ListView中显示。我有一张记录表,每条记录都应该从其他表中进行计数查询。
这是检索的每个对象的计数查询的线程:
getVisualizations = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < events.size(); i++) {
ParseQuery<ParseObject> query = ParseQuery.getQuery(ParseConstant.PT_VISUALIZ);
query.whereEqualTo(ParseConstant.PT_VISUALIZ_EVENTO, events.get(i));
events.get(i).setVisualizations(query.count());
}
}
});
events是一个Object ArrayList
这是主要的代码
ParseQuery<ParseObject> query = ParseQuery.getQuery(ParseConstant.PT_EVENT);
query.setLimit(30);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> resultList, ParseException e) {
if (e == null) {
events = new ArrayList<Event>();
for (int i = 0; i < resultList.size(); i++) {
Event event = (Event) resultList.get(i);
events.add(event);
}
if (!getVisualizations.isAlive()) {
getVisualizations.start();
}
if (adapter != null) {
adapter.notifyDataSetChanged();
} else {
adapter = new AdapterEvent(getActivity(), R.layout.list_event, events, list);
AnimationAdapter animAdapter = new SwingBottomInAnimationAdapter(adapter);
animAdapter.setAbsListView(list);
list.setAdapter(animAdapter);
}
loadingBar.setVisibility(View.INVISIBLE);
} else {
Log.d("score", "Error: " + e.getMessage());
}
}
});
问题是线程启动后,我不知道如何阻塞主线程,直到另一个线程完成。 (对不起英文:/)
答案 0 :(得分:0)
也许你应该使用Thread.join() - 如果我们正在处理2个线程,这将阻止一个线程,同时允许另一个线程完成,然后一旦它完成,它将恢复。这是tutorial就可以了