2016-11-21 23 views
0

我有一种情况,在现有项目中使用的视频流库的某个方法(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; 
            } 
          } 
         } 
       } 
     } 
     . 
     . 
     } 
} 
+0

只需确认一下,您是否需要使用“url”的值在'B'中做一些后台处理(而不是简单地将值返回给UI线程)? – clownba0t

+0

@ clownba0t确定,密集的后台处理。也不是用户界面,而是AsyncTask线程。 – Desaretiuss

回答

0

有几种选择:通过使用处理程序,信息和洛珀彼此之间 1)的Android线程进行通信。你必须有另一个线程的处理程序,以便你可以发布消息到该线程。第二个队伍有一个由Looper维护的消息队列,用于发送消息。但是,AsyncTasks的后台线程没有Looper,所以你不能从第二个线程返回asyncTasks的线程 2)最好的路径使用rxJava库。你完全摆脱了AsyncTasks,并且很容易在线程之间切换。

相关问题