繁体   English   中英

清除活动堆栈。 首次跑步活动

[英]Clearing activity stack. First run activities

我有一个应用程序,它可以在首次运行时启动一个简介流,如下所示:

第一次运行

答:介绍文字

B:条款和条件

C:选择语言

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

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

关于我将如何执行此操作的任何想法?

编辑

我知道在每个活动上调用finish()会将其从堆栈中删除。 但是我真正的问题是,如果用户想从B返回到A ,如果我已经在A上调用finish(),那么它将无法正常工作。 抱歉,没有更早指定。

这肯定可以工作,对上一篇文章表示歉意。 后来我意识到它不会起作用。

在活动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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM