在显示内容之前显示进度对话框

时间:2013-04-16 01:52:48

标签: android multithreading

     progressDialog = ProgressDialog.show(MainActivity.this, "", "Loading...");
     Thread thread = new Thread() {

        public void run() {
            latch.countDown();
            try{
                sleep(3000);        
                } 
            catch (Exception e) {       
                Log.e("tag", e.getMessage());       
            }

            progressDialog.dismiss();

        }

    };
    thread.start();   listView.setAdapter(adapter);

我希望在3秒内显示加载然后显示列表视图,但列表总是立即显示。如何在显示listview之前完成线程完成?

1 个答案:

答案 0 :(得分:2)

你不应该让人们无缘无故地等待。如果您要加载某些内容,请加载它。否则,尽可能画出你能做的。

作为您特定问题的答案,您需要在线程setAdapter睡眠3秒之后(现在调用在线程之外...我认为您认为该调用会阻塞,但是这是Thread的重点,它在你的代码的其余部分执行时做了自己的事情。)

但是,Thread不能对你的显示线程做任何事情(除了抛出异常),所以你必须将listView.setAdapter(adapter)调用包裹在Runnable中并通过{{ 1}}来自你的线程......

但不要!