0
     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 秒内显示加载,然后显示列表视图,但列表总是立即显示。如何在显示列表视图之前完成线程?

4

1 回答 1

2

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

作为对您的特定问题的回答,您需要在线程setAdapter休眠 3 秒后让线程(现在该调用在线程之外......我认为您认为该调用阻塞,但这就是线程的全部意义,它在执行其余代码时做自己的事情)。

但是, Thread 不能对您的显示线程做任何事情(除了抛出异常),因此您必须将该listView.setAdapter(adapter)调用包装在 a 中Runnable并通过 aHandler从您的 Thread...调用它。

但不要!

于 2013-04-16T02:07:34.720 回答