Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.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 Android不使用AsyncTask管理线程_Java_Android_Multithreading - Fatal编程技术网

Java Android不使用AsyncTask管理线程

Java Android不使用AsyncTask管理线程,java,android,multithreading,Java,Android,Multithreading,我有一个项目,我正在工作,我需要提高我的知识线程 场景: 我有一个活动,它调用一个使用线程的方法: Object soapResponse = soaphttp.fetchNextCatalogueRange(0, numberOfItems); 在soaphttp类中,我有: Thread soapThread = new Thread(new Runnable() { private Object serverResponse = new O

我有一个项目,我正在工作,我需要提高我的知识线程

场景: 我有一个活动,它调用一个使用线程的方法:

Object soapResponse =  soaphttp.fetchNextCatalogueRange(0, numberOfItems);
在soaphttp类中,我有:

Thread soapThread = new Thread(new Runnable()
    {           
        private Object serverResponse = new Object();

        public void run()
        {

              // Do network stuff here


        }   
    });

    soapThread.start();
   try
    {
        // crude synchronisation
        soapThread.join();
    }
问题 使用join()会阻止UI线程。 如果不使用join(),则会出现空指针异常(数据同步错误)

挑战: 在我的活动中,我想在soaphttp类获取数据然后同步时在UI线程上做一些事情,即告诉UI线程数据已经准备好。 例如,显示进度条。。它将在数据提取完成后终止


如何在不使用AsyncTask的情况下执行此操作?

在线程的run()方法的最后,使用以下方法之一:

  • View类的post()方法

  • Activity类的runUnuithRead()方法

以便在UI线程中刷新UI


在run()方法开始时,您可以使用相同的方法以某种方式更改UI(禁用相同的小部件,显示某种进度指示器…

我认为您可以从阅读本文开始。一个非常简单的解决方案是使用handlerAsyncTask将消息发布到UI线程。对于这种情况,Task是一个很好的工具。你为什么不想使用它呢?使用AsyncTask是解决问题的最好方法scenario@Sanjeev我在问题中说我想更好地理解线程。。。我知道如何使用AsyncTask,所以这样做不会解决任何问题。类似问题: