SMACKを使用してXMPPクライアントを作成しています。Android runOnUiThread - アクティビティを渡す方法
私はcontactListを更新したいとき、ListAdapter.notifyDataSetChangedはUIスレッドで実行する必要がありますが、明らかにSMACKライブラリはRosterListener(実際には良いことです)でマルチスレッドを使用します。しかし、ここに問題があります:s.thを実行する。 UIスレッドでは、有効なコンテキストが必要です。
しかし、どうすれば入手できますか?アクティビティのコンテキストをRosterListenerのレジスタ関数に渡すことが頭に浮かんだ最初のものでしたが、レジスタ関数に到達する前に別のクラスの関数がいくつかあります。それが最終的にその目的地に到達するまで何度も何度も何度も繰り返し使用されます。
私はこの問題に遭遇した唯一の人ではないと思いますので、どうすれば解決できますか?
これを保存するだけのシングルトンかもしれないコンテキスト(私の意見では、あまり好ましくないアイデア...) または、おそらく私のデザイン全体に欠陥がありますか? どこからでもUIスレッドを取得する可能性はありますか?
ボトムライン:現時点では、複数の機能を介してコンテキストを引数として渡していますが、それを行うより良い方法があります。
ありがとうございました。
チャットクライアントの場合は特に素晴らしいアイデアです。バックグラウンドサービスは非常に便利で、私の問題も解決します。ありがとう;-) –
あなたはこの答えを受け入れることをお勧めしますか? –