2012-02-22 13 views
0

ブロードキャストを使用して子スレッドからメインUIスレッドにメッセージを送信しようとしています。だから私は私の活動(私は複数の嫌い)上の放送受信機を持って、私はそれらのメッセージを1つの子スレッド(実行可能)から送信できるようにしたい。ここで子スレッドからのAndroidブロードキャスト

は、私は子スレッドでやっているものです:

Intent broadcastIntent = new Intent(); 
broadcastIntent.setAction(ResponseReceiver.ACTION_RESP); 
broadcastIntent.putExtra("Controller", "connect"); 
context.sendBroadcast(broadcastIntent); 

しかし、問題は、私はコンテキストを定義する方法ですか?それは例外 "コンテキストを解決することはできません"私はそれを使用しない場合、 "sendBroadcast"メソッドを見つけることはできません。では、どうやってこれを行うことができますか?

答えて

5

アクティビティまたはアプリケーションコンテキストをスレッドに渡すことができます。

あなたが活動中であれば、あなたが行うことができます:

Context myContext; 
    myContext = this; 

または

myContext = getApplicationContext(); 

その後、あなたの子スレッドにコンテキストを渡す:

new Thread(new SomeThread(myContext)).start(); 



    public class SomeThread implements Runnable 
    { 
     Context context; 
     public SomeThread(Context ctx) 
     { 
      context = ctx; 
     } 

     public void run() 
     { 
      // Do stuff with context. 
     } 
    } 
+0

をうん、そうですね。問題は私がそれを避けたかったことです:)最初は、ハンドラを使ってアクティビティにメッセージを送り、アクティビティが変更されるたびにハンドラ参照を子スレッドに送信しなければなりませんでした。 – AndreiBogdan

+0

ああ、どこからでもコンテキストにアクセスしたいのであれば、このスレッドのアイデアのいくつかを試すことができます:http://stackoverflow.com/questions/987072/using-application -context-everywhere – triad

関連する問題