我有一个应用程序在第一次运行时启动介绍流程,如下所示:
ON FIRST RUN
答:简介
B:条款和条件
C:选择语言
完成所有这些步骤后,应用程序会将first_run属性设置为false并启动活动 D 。
现在,我想要做的是清除活动堆栈,以便当用户按下后退按钮时返回主屏幕而不是活动 C ,然后当应用程序再次启动时它直接进入活动 D 。
关于如何做到这一点的任何想法?
修改
我知道在每个活动上调用finish()会将其从堆栈中删除。但我真正的问题是,如果用户想要从 B 返回 A ,如果我已经在 A上调用了finish(),那么它将无效即可。很抱歉没有提前说明。
答案 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)活动。