从工作线程获取数据到另一个

时间:2016-11-21 11:46:50

标签: android multithreading android-asynctask thread-safety

我有一种情况,我在现有项目中使用的视频流库的某个方法 - onConnect()在AsyncTask线程中启动一个新线程。我知道如何与UI线程进行通信,但我不知道如何将数据从工作线程传递到另一个工作线程。具体来说,我想将这个新线程中生成的字符串传递给后台线程。

public class A extends Activity{
      .
      .
      public class B extends AsyncTask<X, Y, Z>{
         .
         . 
         String myUrl;

         os.setOctoshapeSystemListener(new OctoshapeSystemListener() {
                      @Override
                       public void onConnect(String authId) {
                         StreamPlayer sp=os.createSP(channel_url);
                             sp.setListener(new StreamPlayerListener() {
                                   @Override
                                   public void gotUrl(String url) {
                                        //myUrl=url;
                                   }
                             }
                       }
                }
         } 
         .
         . 
      }
}

1 个答案:

答案 0 :(得分:0)

有几种选择: 1)Android线程通过Handler,Message和Loper相互通信。您必须拥有另一个线程的Handler,以便您可以将Message发布到该线程。第二个thred有一个由Looper维护的消息队列,它发送消息。但是,AsyncTasks的后台线程没有Looper,因此您无法从第二个线程回复到asyncTasks的线程 2)优选的路径使用rxJava库。你完全摆脱了AsyncTasks,并且很容易在线程之间切换。