Android中关于登陆拦截逻辑流程(Intent传递使用步骤)
问题:
我们在开发中经常遇到这样的需求,当前用户在A界面点击按钮想跳到C界面,但是该用户当前并未登陆账户,此时我们就想让用户在跳到C界面之前跳到B界面进行登陆操作,当登陆成功时候直接跳到C界面,整个思路流程如下图所示;
解决方式一:
使用Intent 传递:
A界面(MainActivity):
//点击按钮相应的代码
//使用 startActivityForResult 直接跳到C界面
Intent intent = new Intent(MainActivity.this, CActivity.class);
startActivityForResult(intent, 100);
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
//开启C的界面 RESULT_OK即代表已做登陆处理
if (requestCode == 100 && resultCode == Activity.RESULT_OK) {
Intent intent = new Intent(MainActivity.this, CActivity.class);
intent.putExtra("isLoading", false);
startActivity(intent);
}
}
C界面(CActivity)操作:
//首先要判断是否处于登陆状态 如果未登陆则使用以下代码
Intent intent = getIntent();
//请求转发
intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_FORWARD_RESULT);
intent.setClass(CActivity.this, BActivity.class);
startActivity(intent);
//退出当前界面
finish();
B界面(BActivity)操作:
//进行登陆操作 成功后
setResult(Activity.RESULT_OK);
finish();
解决方式二:
我们当然也可以在A界面直接判断当前是否登陆,如果已经登陆那么直接跳转到C,如果未登陆那么跳转到B界面,再登陆,在登陆成功的条件下跳转到C界面(条件判断可以通过Intent携带)。