我有一种情况,我在现有项目中使用的视频流库的某个方法 - 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 :(得分:0)
有几种选择: 1)Android线程通过Handler,Message和Loper相互通信。您必须拥有另一个线程的Handler,以便您可以将Message发布到该线程。第二个thred有一个由Looper维护的消息队列,它发送消息。但是,AsyncTasks的后台线程没有Looper,因此您无法从第二个线程回复到asyncTasks的线程 2)优选的路径使用rxJava库。你完全摆脱了AsyncTasks,并且很容易在线程之间切换。