3

私は robospice (GoogleHttpClientSpiceService) のサンプルを実装することに成功し、それは動作します - サーバーに正常にアクセスし、データを取得してキャッシュに保存します。Activity が onPause でない場合、トーストを表示し、GUI を更新します。

私の問題 (そして私が robospice を試した唯一の理由) は、アクティビティが再開された場合、再度通知されないことです。私は何か間違ったことをしていますか?

    @Override //THIS IS NOT CALLED ON ACTIVITY RESUME (BECAUSE OF THIS I CANNOT DISMISS DIALOG)
    public void onRequestSuccess( final String result ) {
        Toast.makeText( PrijavaActivity.this, "success", Toast.LENGTH_SHORT ).show();
        Log.w(TAG, "sakses" + result);


        FragmentManager fm = getSupportFragmentManager();
        Fragment fragment = fm.findFragmentByTag("prijavaDialog");
        if(fragment!=null) {
            FragmentTransaction ft = fm.beginTransaction();
            ft.remove(fragment);
            ft.commit();
        }
    }

ありがとう...

4

1 に答える 1

2

あなたはロボスパイスを誤解しています。あなたが得る行動は正しいものです。

アクティビティが停止すると(あなたが言ったように非アクティブ)、そのすべてのリクエストリスナーが削除され、通知されません。

リスナーは、それらを所有するアクティビティがまだ生きている限り通知されます。それが RoboSpice の要点です: リスナーやアクティビティのメモリ リークを防ぐためです。

リクエストを開始したアクティビティが非アクティブになった場合でも、リクエストの結果を「聞き続けたい」場合は、別の戦略を採用する必要があります。アプリケーションやサービスなどのより安定したコンテキストを使用してリクエストを起動するか、そのコンテキストからのリクエスト結果をリッスンする必要があります (実行ではなく addListenerIfPending を使用)。

于 2013-01-20T08:05:25.527 に答える