这篇文章有很多主题。但我无法找到解决问题的方法。
让我先描述一下activity
堆栈。
SplashScreen-> A->登录 - >首页
我想要实现的是,当我在登录back
后点击Home
按钮时,我应该退出应用程序并转到Home
如果我使用我的申请再次。为此,我假设在登录之后我应该在Home之前清除活动堆栈。如果用户尚未登录,我还想保留活动堆栈。
我希望这可以在2.1
之后或之后工作我已经尝试过了。
在finish()
活动中使用Login
,然后在startActivity
上致电Home
。如果我在Home上使用后退按钮,这会将我重定向到A.
FLAG_ACTIVITY_NEW_TASK
和FLAG_ACTIVITY_CLEAR_TOP
的所有变体形式。什么都没有用,当我使用后退按钮时,我被重定向到登录屏幕。
实现这一目标的任何建议或简单解决方案?
答案 0 :(得分:0)
在finish()
上调用Login
之前,在startActivity
活动中使用Home
。如果我在Home上使用后退按钮,这会将我重定向到A.
确定所以在调用startActivity
如果我再次使用我的申请,请转到
Home
如果登录成功,只需将您的登录参数直接保存在SharedPreference
和A startActivity Home中。
答案 1 :(得分:0)
如果您想尝试这条路线,也可以尝试使用BroadcastReceiver
。
在“SplashScreen”和“A”活动中,您可以使用onCreate
方法创建并注册IntentFilter
和BroadcastReceiver
,如下所示:
假设您有一个名为broadcastReceiver
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("ACTION_LOGIN");
this.broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
};
registerReceiver(broadcastReceiver, intentFilter);
另外,请不要忘记在onDestroy
方法中注销接收器(这是为了防止程序中的内存泄漏):
@Override
protected void onDestroy() {
unregisterReceiver(this.broadcastReceiver);
super.onDestroy();
}
现在,在您的“登录”活动中,一旦用户成功登录,您就可以向所有已注册的接收者广播消息,这将在后台堆栈中完成这些活动:
Intent broadcastIntent = new Intent();
broadcastIntent.setAction("ACTION_LOGIN");
sendBroadcast(broadcastIntent);
您的SplashScreen和A活动现在将完成。