Android:launchMode = SingleTask问题

时间:2011-05-16 12:39:14

标签: java android android-activity launchmode

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

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

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

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

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

3 个答案:

答案 0 :(得分: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();

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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