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

起初,当选择这个项目时,我总是开始一个新的主要活动。使用意图包,我确实告诉主要活动,我在新开始时所做的一些初始化是不必要的。

然而,我不太喜欢整体行为。我偶然发现 android:launchMode="SingleTask" 这似乎有帮助:现在我不会一直重新创建我的主菜单活动;另外,如果我按“后退”按钮,我会直接返回主屏幕。这感觉就像一个合适的“主”菜单。

我现在的问题是这样的:如果我运行应用程序的另一个活动,请按主页按钮,然后重新打开我的应用程序(例如使用“最后一个应用程序”),那么我不会返回到最后一个活动,而是返回到主要活动。其他活动被破坏。

任何想法如何我可以实现的行为 SingleTask 而不只能返回一项活动?

有帮助吗?

解决方案

如果您的其他活动在 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();

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

其他提示

为什么不对主活动创建的活动调用 finish() 呢?这样您就可以返回主要活动,而无需创建新活动......

我认为您应该在开始另一个活动之前保存活动的状态,然后在返回上一个活动时恢复您的活动。查看 Android 的 Activity 生命周期http://developer.android.com/guide/topics/fundamentals/activities.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top