清除活动堆栈。首次开展活动

时间:2012-01-10 10:42:59

标签: java android

我有一个应用程序在第一次运行时启动介绍流程,如下所示:

ON FIRST RUN

答:简介

B:条款和条件

C:选择语言

完成所有这些步骤后,应用程序会将first_run属性设置为false并启动活动 D

现在,我想要做的是清除活动堆栈,以便当用户按下后退按钮时返回主屏幕而不是活动 C ,然后当应用程序再次启动时它直接进入活动 D

关于如何做到这一点的任何想法?

修改

我知道在每个活动上调用finish()会将其从堆栈中删除。但我真正的问题是,如果用户想要从 B 返回 A ,如果我已经在 A上调用了finish(),那么它将无效即可。很抱歉没有提前说明。

2 个答案:

答案 0 :(得分:6)

这肯定会起作用,为最后一篇文章道歉。 我后来意识到它不会起作用。

在活动A,B和C中使用:

BroadcastReceiver myReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("ActivityA", "finishing A");
        finish();
    }
};

@Override
protected void onDestroy() {
    unregisterReceiver(myReceiver);
    super.onDestroy();
} // This is mandatory to unregister the receiver, else error occur

在onCreate这些活动中,添加:

IntentFilter myFilter = new IntentFilter("finish_my_activities");
registerReceiver(myReceiver, myFilter);

在活动D中,你要完成所有这些:

sendBroadcast(new Intent("finish_my_activities"));
//Where ever you wanna finish those activities

答案 1 :(得分:0)

使用SharedPreferences保存first_reun属性并在活动的OnCreate(A,B和c)上检查其值。

然后在你的清单中添加(android:noHistory =“true”)到(D)活动。