5

メイン アクティビティ (メイン メニュー) を一周するアプリがあります。他の各アプリには、このアクティビティを指示するオプション メニュー項目があります。

最初は、このアイテムを選んだときに必ず新しいメインアクティビティを開始しました。インテント バンドルを使用して、最初に行う初期化の一部は不要であることをメイン アクティビティに伝えました。

ただし、全体的な動作はあまり好きではありませんでした。たまたま見つけたのですがandroid:launchMode="SingleTask"、これが役に立ったようです。また、「戻る」ボタンを押すと、ホーム画面にまっすぐ戻ります。これは、適切な「メイン」メニューのように感じます。

私の問題はこれです:アプリの別のアクティビティを実行し、ホームボタンを押してからアプリを再度開くと(たとえば、「最後のアプリ」を使用)、最後のアクティビティには戻りませんが、メインのアクティビティに戻ります。他のアクティビティは破棄されます。

SingleTask1 つのアクティビティに戻るだけでなく、の動作を実装する方法はありますか?

4

3 に答える 3

3

他のアクティビティが Android のアクティビティのデフォルトで正常に宣言されている場合、アプリに戻ると、(ハードウェアのホーム ボタンを使用して) 中断した同じアクティビティに移動するはずです。

ただし、システム リソースが必要な場合、Android システムはアプリケーションを強制終了することに注意してください。そのため、他のアプリケーションに移動したときにアプリが強制終了された可能性があります。その後、アプリに戻ると、メニュー アクティビティであるデフォルトのランチャー アクティビティが再開されます。

任意のアクティビティからメイン アクティビティに戻るには、次の操作を行います。

public static void goHome(Context context) {
        final Intent intent = new Intent(context, HomeActivity.class); //give name of your main activity class here
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        context.startActivity(intent);
    }

これにより、アクティビティ スタックがクリアされ、メインのアクティビティに戻ります。singleTop を宣言すると、既存のメイン アクティビティが前面に表示されます。フラグ Intent.FLAG_ACTIVITY_CLEAR_TOP は、メイン アクティビティの上にあるスタック内のすべてのアクティビティを削除します。(同じアプリケーション内にいると仮定しています)。

これで、他のすべてのアクティビティには、クリック リスナーがメソッドを呼び出すボタンを含めるだけで済みます。goHome();

メイン アクティビティから、ハードウェアの戻るボタンを押すと、アプリが終了します。

于 2011-05-16T13:24:41.483 に答える
0

メイン アクティビティによって作成されたアクティビティで finish() を呼び出さないのはなぜですか? このようにして、新しいアクティビティを作成せずにメインのアクティビティに戻ります...

于 2011-05-16T12:48:07.820 に答える