显示确定通过线程取消Dialogbox

时间:2011-11-16 12:39:54

标签: java android multithreading

我有一个产生线程的Android服务。这个线程等待网络数据,并且在收到数据后我想显示Ok Cancel Dialogbox。

我得到异常无法创建应该有Looper.prepare()的句柄。我添加了Looper.prepare()Looper.loop()然后现在我没有得到任何异常,但它无限期等待。

2 个答案:

答案 0 :(得分:1)

不使用唯一的线程,最好使用AsyncTask,它也是Android的专用线程。

您可以在AsyncTask的doInBackGround方法中等待数据,当您收到数据时,可以调用publishProgress(),这将调用AsyncTask的onProgressUpdate方法。

onProgressUpdate,您可以在不阻塞主线程的情况下更新UI,这也是在网络监听等后台进行长时间操作的首选方式。

检查AsyncTask以获取更多信息以及如何使用它。

http://developer.android.com/reference/android/os/AsyncTask.html

答案 1 :(得分:0)

您可以使用处理程序在非UI线程中调用UI线程(显示警告对话框),如下面的代码

new Thread(new Runnable() 
         { public void run() 
         { 
            try {
                ///do your stuff in 

                     mHandlerShowDialog.post(mUpdateShowDialog);
            ///do your struff
        }
      } ).start();


final Handler mHandlerShowDialog= new Handler();

     final Runnable mUpdateShowDialog = new Runnable() {
         public void run() {
        // show your dialog here
         }
     };