多页面跳转返回-注销登录

今天做了一个注销登录的功能,也就是你登录成功后,在设置界面需要注销退出到登录界面,在这里遇到一个问题就是——需要关闭

之前打开的全部页面,然后跳转到最初的登录界面。因为之前打开了多个界面,现在需要在一个界面中关闭所有页面,但是又不是直

接退出app,所以无法使用类似system.exit()等类似的方法直接杀死进程退出。现在我提供三种思路来解决这个解决这个问题。

解决思路一:

这种方法应该是大多数人最先想到的,即:使用静态变量保存每个打开的Activity的对象,或者在自定义的Application中保存每个Activity

的对象,然后在注销时利用Application获取所有保存的Activity对象,然后关闭所有的Activity。


解决思路二:

使用广播的方式,在每个要关闭的Activity中注册一个特殊的广播,在这个广播中关闭自身,然后注销广播。在注销登录操作中发送关闭

Activity的广播。

	private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
        	Log.i("MainActivity", "收到广播");
        	if(intent.getAction().equals(Constant.logout))
        	{      		      		
    			unregisterReceiver(this);			
	            ((Activity) context).finish();
        	}          
        }
	};
		IntentFilter filter = new IntentFilter();
	    filter.addAction(Constant.logout);
	    registerReceiver(broadcastReceiver, filter);

在每个要关闭的页面中都注册上述的广播,在注销时只要发送这样的广播就行,记住一定要在关闭之前注销这个广播,否则会抛出广播

未注销的异常。

				Intent broadCast = new Intent();
				broadCast.setAction(Constant.logout);
				sendBroadcast(broadCast);

解决思路三:使用Intent.FLAG_ACTIVITY_CLEAR_TOP

在android API中已经清楚的介绍了这个属性了,如果在这个注销的页面要关闭所有的Activity并且打开登录页面,那么在刚开始登录的时

时候不要关闭登录页面,那么在startActivity登录页面时,不会创建新的实例,而是将登录页面上所有的页面都clear,然后将自己放到task

的首部。

		Intent intent = new Intent(SettingActivity.this, LoginActivity.class);
		intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
		startActivity(intent);




  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值