5

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

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

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

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

有什么想法可以在SingleTask不返回一项活动的情况下实现的行为吗?

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

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

于 2011-05-16T12:48:07.820 回答
0

我认为你应该在开始另一个活动之前保存你的活动状态,然后在你回到最后一个活动时恢复你的活动。请参阅 Android http://developer.android.com/guide/topics/fundamentals/activities.html的活动生命周期

于 2011-05-16T12:58:40.183 回答