2011-09-09 3 views
1

私は、セカンダリスレッド上で実行されているオブジェクト内にメソッドを持っています。エラーが発生した場合、このメソッドはオブジェクトのデリゲートにこれに応答するように指示します。応答はメインスレッド(すなわちUIスレッド)上で行わなければならない。Androidとセカンダリスレッドからのメインスレッドへのコール

セカンダリスレッドからメインスレッドにコールスルーするにはどうすればよいですか?私のオブジェクトのクラスはActivityを拡張せず、明らかなActivityオブジェクトを持っていません。

答えて

1

Androidハンドラを使用します。ここでは例もちろん

http://www.tutorialforandroid.com/2009/01/using-handler-in-android.html

だ、あなたは何とか自分の第二のスレッドにハンドラを渡す必要があります。

+0

私は参照を保持しているメインスレッドのルートアクティビティで作成された 'Handler'を使用しました。もう1つのキャッチは、私がポップしたい「トースト」を作る場所でした - 私は "this"を介してコンテキストにアクセスする必要がありますが、 "this"はセカンダリスレッドではあまり意味がありません。これは本当に必要なものよりも少し複雑に思えますが、それは私だけかもしれません。とにかく、それは動作し、それほど悪くはありません。 – SK9

1

2番目のクラスに変数Contextを作成し、その変数のこのクラスへのアクティビティ参照を渡すことができます。

後で、アクティビティと同様の方法でコンテキストを使用できます。

1

これを達成するための戦略は、AsyncTask、Handler、View.post()です。それらはすべて記述されていますpainless threading article.

+0

あなたの返事に完全な説明がない場合、サイトへのリンクを投稿しないでください。リンクが壊れていて、この答えが役に立たなくなった –

+0

質問に答える方法を他人に教える代わりに、自分で質問に答えるのはどうですか? Androidの開発者の公式記事であれば、簡単な検索で新しいリンクを見つけることができます:http://android-developers.blogspot.si/2009/05/painless -threading.html –

+0

申し訳ありません。ちょうど最高の答えをし、参照リンクで答えをバックアップすると言っています。ありがとう –

関連する問題