Android:在线程中解析查询



我正在使用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个线程,这将阻塞一个线程,同时允许另一个线程完成,然后一旦它完成,它将继续。这里有一个关于它的教程

最新更新