-1

(Dialog Theme)Activity Aを開始する があり、バックグラウンドとフォアグラウンドに表示されます。Activity BActivity AB

ただし、ホームボタンを押してから再度アプリに戻ると、A表示されなくなります - のみBonResume()of B は呼び出されますが、 ofAではありません。

onDestroy()私が見ることができるように、 inAは呼び出されていません。この動作の理由は何でしょうか?

AsingleInstance MAIN/LAUNCHER アクティビティとして定義され、 BSettingsActivity.show から始まります。

public static void show(final Context context, final boolean inRegisterFlow) {
    final Intent intent = new Intent(context, SettingsActivity.class);
    context.startActivity(intent);
}
4

2 に答える 2

1

問題はあなたの使い方ですlaunchMode="singleInstance'。ActivityA が で定義されている場合launchMode="singleInstance"、ActivityA が ActivityB を起動すると、ActivityB は別のタスクになります。ユーザーが [戻る] ボタンを押すと、両方のタスク (ActivityA を含むタスクと ActivityB を含むタスク) がバックグラウンドで終了します。ユーザーが含まActivityBれているタスクをフォアグラウンドに移動すると、別のタスク (ActivityA を含む) はまだバックグラウンドにあります。

あなたのアーキテクチャは壊れているように聞こえます。ダイアログのように動作させたいのに、なぜダイアログをテーマにしたアクティビティを起動するのですか? ActivityA でダイアログを表示してみませんか? なぜあなたは使用していlaunchMode="singleInstance"ますか?一般に、これは (ホーム画面の代替品を開発している場合を除いて) 間違っており、ほとんどの開発者はそれがどのように機能するかを本当に理解していないため、通常、解決するよりも多くの問題を引き起こしました。

また、onResume()ActivityB が再開されるため (つまり、フォアグラウンドにあるため)、ActivityB で呼び出されます。onResume()そのアクティビティはフォアグラウンドにないため、ActivityA では呼び出されません。「再開状態」になるアクティビティは 1 つだけです。他のすべてのアクティビティは「一時停止」されています。

于 2013-10-30T11:48:58.007 に答える
0

A.onResume() を onResume() の実装に追加します。これは、バックグラウンドにあるため、戻ってきたときに A が再開されないためです。

しかし、それは単に悪いアプローチです

于 2013-10-30T10:22:21.693 に答える