2012-01-24 7 views
0

Android 2.1、RoboGuice 1.1、Guice 2.0(aopなし)で動作しています。
私のアプリは、私がAPIでPopupWindowを最初に見つかった時Android - バックグラウンドスレッドのログインダイアログを実装する方法

。サーバに接続し、ログインするための資格情報を提供するために、ユーザーが必要な場合がありますActivityonCreate方法で開始されるバックグラウンドスレッドを持っていますが、I in this postを使用しないでください。

だから、私は、バックグラウンドスレッドに私Activityを注入するとActivity.runOnUIThread(Runnable r)に渡さRunnableDialogを開こうとしましたが、私のバックグラウンドスレッドにそれを注入する際、残念ながらroboguiceは、私の活動の新しいインスタンスを作成しています。

これで、ログインダイアログを実装する正しい方法は、Intentを自分のアクティビティに送信して、Dialogとすることです。さらに、私はActivityが(資格情報を含む)Intentをバックグラウンドスレッドに送り返す必要があると仮定します。
これは正しいのですか、それを行うより洗練された方法がありますか?

this postIntentの受信機を登録する方法が見つかりました。しかし、Activityインスタンスをバックグラウンドスレッド内でregisterReceiverと呼びますか?

敬具

+0

"私のバックグラウンドスレッドにmyActivityを注入しようとしました"とはどういう意味ですか?そのロゴギスの用語ですか? –

+0

RoboGuiceが私のバックグラウンドスレッドを作成するのは、単純なPOJOだからです。このクラスには、@Inject private MyActivity mainActivity;というフィールドがあり、これもRoboGuiceによって設定されます。 –

+0

'runOnUiThread'がオプションでない場合は、必要なのはインテントではなくハンドラです。 –

答えて

0

私はRoboAsyncTaskを使用し、基本的活動へのアクセス権を持って活動に内部クラスを作成することをお勧め。それは私のためにうまくいく。異なるアクティビティからログインする必要がある場合は、トップレベルのクラスにして、フラグメントまたはアクティビティのインスタンスを非同期タスクコンストラクタに渡し、onSuccessでuiの更新を行います。

関連する問題