2016-11-21 3 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確かに、集中的なバックグラウンド処理。 UIではなくAsyncTaskスレッドでもあります。 – Desaretiuss

答えて

0

いくつかのオプションがある: 1)Androidのスレッドがハンドラ、メッセージ及びLoperを使用して相互に通信します。あなたはそのスレッドにメッセージを投稿できるように、別のスレッドのHandlerを持たなければなりません。その第2のthredには、メッセージを送信するLooperによって維持されるメッセージキューがあります。しかし、AsyncTasksのバックグラウンドスレッドにはLooperがないので、2番目のスレッドからasyncTasksのスレッドに戻ることはできません 2)望ましいパス使用rxJavaライブラリ。あなたはAsyncTasksを一切取り除き、非常に簡単にスレッド間を切り替えます。

関連する問題