2

サーバーと非同期で通信するアプリケーションを作成しました。アプリケーションがサーバー要求を行うと、「読み込み中」の通知を含む新しいダイアログ(アクティビティ)が作成されます。メインアクティビティはサーバーの応答を処理するためのメソッドを実装しています。メインアクティビティがサーバーから応答を受け取ったら、フォアグラウンドアクティビティを閉じたいと思います。

通知ダイアログは次の方法で作成されます。

 private void showServerRequestDialog(String actionLabel){
    Intent intent = new Intent(this, DlgServerRequest.class);
    intent.putExtra(SERVER_REQUEST_ACTION, actionLabel);
    startActivity(intent);

}

したがって、ユーザーが認証を試みると、次のメソッドが呼び出されます。

private void authenticateUser(String IMEI, String username, String password){
    mEncoderConnection.authenticateRequest(IMEI, username, password);
    showServerRequestDialog("Authenticating...");
}

onAuthenticateResponseは認証応答を処理します。

public void onAuthenticateResponse(AuthenticateResponse pkg) {
    //code for response handling
    //TODO: close ServerRequestDialog
    }
}

onAuthenticateUser()の実行時に通知ダイアログ(DlgServerRequest)を閉じる方法を誰かが提案していただければ幸いです。

4

1 に答える 1

5

ProgressDialog実数またはその他のを使用しないのはなぜDialogですか? あとは、あとはdismissDialog()だけです。

それが受け入れられない場合、私が見ることができる 2 つの主な行動方針があります。

  1. 認証ロジックをDlgServerRequestクラスに移動して、finish()それ自体ができるようにします。
  2. クラスのインスタンスをDlgServerRequest静的データ メンバーに配置して、メイン アクティビティfinish()でそれを呼び出すことができるようにします。

オプション #2 を選択した場合、nullメモリ リークを回避するために、その静的データ メンバーを除外することが非常に重要です。

于 2009-09-28T14:03:26.807 に答える