Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过线程显示ok cancel对话框_Java_Android_Multithreading - Fatal编程技术网

Java 通过线程显示ok cancel对话框

Java 通过线程显示ok cancel对话框,java,android,multithreading,Java,Android,Multithreading,我有一个Android服务,它生成一个线程。这个线程等待网络数据,在收到数据后,我想显示Ok Cancel对话框 我得到的异常不能创建应该有Looper.prepare()的句柄。我添加了Looper.prepare()和Looper.loop(),然后现在我没有得到任何异常,但它会无限地等待。您可以使用如下代码中的处理程序在非UI线程中调用UI线程(显示警报对话框) new Thread(new Runnable() { public void run()

我有一个Android服务,它生成一个线程。这个线程等待网络数据,在收到数据后,我想显示Ok Cancel对话框


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

您可以使用如下代码中的处理程序在非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
         }
     };

与其使用单一线程,不如使用AsyncTask,它也是Android的专用线程

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

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

检查AsyncTask以了解更多信息以及如何使用它


请显示代码和logcat错误。