2016-11-21 24 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,並且很容易在線程之間切換。

相關問題