5

私のアプリでは、次々といくつかのアクティビティがあります。ログイン画面の後にホーム画面があり、その後にいくつかの画面があります。ユーザーがデバイスのホームボタンまたは電源オフボタンを選択すると、ユーザーが再びアプリにアクセスしてからホーム画面にアクセスしたときにログイン画面を表示したいと考えています。すべてのアクティビティを休ませます。基本クラスから終了しています。ここまでやってきましたが、私の問題は、他のアクティビティでダイアログを表示し、そのインスタンスでユーザーがホームまたは電源ボタンをクリックすると、WINDOW LEAKED EXCEPTIONが発生することです。

ここに画像の説明を入力

私が持っているように、TempActivityがダイアログを表示していて、ユーザーがホームボタンをクリックしたため、StoreActivityとTempActivityは終了しますが、ダイアログが閉じられることはありませんでした。では、この状況に対処する最善の方法は何でしょうか。例外が発生しないように、ダイアログを閉じるより良い方法はありますか。

4

3 に答える 3

2

オーバーライドonDestroyします。ダイアログが表示されているかどうかを確認し、表示されている場合は閉じます。

于 2013-03-06T10:15:08.880 に答える
2

onDestroy() の Dismiss() は、この問題を解決しません。次のように activity.finish() をオーバーライドしてみてください。

@Override
public void finish() {
    if(mDialog != null) {
        mDialog.dismiss();
    }
    super.finish();
}
于 2016-01-26T06:25:20.927 に答える
1

メンバー オブジェクトにDialogハンドルを配置し、最上位のアクティビティが終了したら、最初にダイアログを閉じます。

Activity呼び出し時に可能なダイアログを閉じる抽象クラス(すべてのアクティビティが拡張される)を作成することで、これをよりきれいにすることができますfinish()

于 2013-03-06T10:10:30.913 に答える