アンドロイド:アクティブなアクティビティからフォアグラウンド アクティビティを閉じるにはどうすればよいですか?
-
18-09-2019 - |
質問
サーバーと非同期通信するアプリケーションを作成しました。アプリケーションがサーバー要求を行うと、「読み込み中」通知を含む新しいダイアログ (アクティビティ) が作成されます。メイン アクティビティはサーバー応答を処理するメソッドを実装しており、メイン アクティビティがサーバーから応答を受信したときにフォアグラウンド アクティビティを閉じたいと考えています。
通知ダイアログは次の方法で作成されます。
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) を閉じる方法を誰かが提案していただければ幸いです。
解決
なぜ本物を使わないのか ProgressDialog
または他のもの Dialog
?そうすれば、あなたがする必要があるのは、 dismissDialog()
, 、それで終わりですか?
それが受け入れられない場合、私が考えている主な行動は次の 2 つです。
- 認証ロジックを
DlgServerRequest
クラスなので、それができますfinish()
自体。 - あなたのインスタンスを入れてください
DlgServerRequest
クラスを静的データメンバーに変換して、メインアクティビティが呼び出せるようにしますfinish()
その上で
オプション #2 を選択した場合、次のことが非常に重要です。 null
メモリ リークを避けるために、静的データ メンバーを削除します。
所属していません StackOverflow