总体思路:
思路1 跳转,带上命令,登录后,通过EvnetBus通知原来的界面,由原理的界面执行登录后的行为
思路2 使用startActivityForResut,如果没有登录,在登录后在onActivityResult方法中判断登录的行为
思路1:简单代码
前
if (AccountManager.getInstance().isLogin())
startActivity(InfoEditActivity.class);
else
openLogin(Constants.CODE_sasa_INFO);
后
public void onEventMainThread(LoginEvent event) {
boolean handle = false;
int code = event.getCode();
switch (code) {
case Constants.CODE_MINE_2_INFO:
handle = true;
onInfoClick();
break;
===========
思路3:上面两种其实都是通过传命令字的方法,还有一种通过传递回调函数的方式,这种方式是否可行存在争议,也
很少见,因为这里涉及到了一个Activity去调用另外一个Activity里面的对象的方法,这种情况十分可行呢?
其实EevntBus中的onEventMainThread方法不是什么重新方法(看下图),这个方法最终应该是被Activity对象本身去调用的,
而不是别的Activity去操作的,如果通过接口传递,也就意味着别的Activity会操作上一个Activity的成员变量里面的方法(回调方法)
道理上基本是一致的,不同点是一个是直接传递,一个是注册在一个方法
如果在生命周期没有问题的情况下,思路3看起来更加的简介,不需要再使用命令字前后对照
startActivity(LoginActivity.class, bundle);
看来是可行的,但是怎么把回调对象从一个acvity对象传递给下一个LoginActivity呢,好像不行啊,EevntBus这个方式其实是先把这个对象放在一个地方 这样是可以的