我正在使用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是一个对象数组列表
这是主
中的代码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());
}
}
});
问题是,在线程启动后,我不知道如何阻塞主线程,直到另一个线程完成。(对不起英文:/)
也许你应该使用thread .join() -如果我们处理2个线程,这将阻塞一个线程,同时允许另一个线程完成,然后一旦它完成,它将继续。这里有一个关于它的教程