Android:launchMode = SingleTask问题

jel*_*ish 5 java android launchmode android-activity

我有一个围绕主要活动(主菜单)的应用程序.在每个其他应用程序中,有一个选项菜单项,指向此活动.

首先,我总是在选择此项目时启动一个新的主要活动.使用intent bundle,我确实告诉了主要的活动,我在一个新的开始时做的一些初始化是没有必要的.

但是,我不太喜欢整体行为.我偶然发现android:launchMode="SingleTask"这似乎有所帮助:现在我不会一直重建我的主菜单活动; 另外,如果我按下"后退"按钮,我会直接回到主屏幕.这感觉非常像一个适当的"主菜单".

我现在的问题是:如果我运行我的应用程序的另一个活动,按主页按钮,然后重新打开我的应用程序(例如使用"最后的应用程序"),然后我不会回到上一个活动,而是回到主要活动.其他活动被销毁.

任何想法如何实现行为,SingleTask而不仅仅能够返回到一个活动?

cod*_*ser 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);
    }
Run Code Online (Sandbox Code Playgroud)

这将清除活动堆栈并让您返回主要活动。当您声明 singleTop 时,它将把现有的主要活动带到前台。Intent.FLAG_ACTIVITY_CLEAR_TOP 标志将删除堆栈中主活动顶部的所有活动。(我假设您在同一个应用程序中)。

现在,所有其他活动只需要包含一个按钮,其单击侦听器会调用该方法goHome();

在您的主要活动中,如果您按下硬件后退按钮,它应该退出您的应用程序。