2014-09-27 99 views
0

我正在开发一个用户可登录的Android应用程序。为此,每项活动都将扩展为BaseActivity。在那里,在onResume()方法中,我检查用户是否已登录,如果没有,我通过调用startActivity()来启动我的LoginActivity。我们称之为FailActivitystartActivity()不立即调用?

FailActivity重新开始时,它的onResume()被正确调用,然后调用super.onResume(),我得到startActivity()。但意图从未被执行。而是BaseActivity.onResume()将执行传递回FailActivity.onResume()。因为用户没有登录这将产生一个错误

这里是BaseActivity相关代码:

@Override 
protected void onResume() 
{ 
    super.onResume(); 
    boolean wtf = false; 

    if (!loggedIn) { 
     Intent intent = new Intent(this, LoginActivity.class); 
     intent.putExtra(LoginActivity.EXTRA_NEXT_ACTIVITY, this.getClass().getName()); 
     startActivity(intent); 
     wtf = true; 
    } 
    if (wtf) 
     Log.wtf("wtf", "this should not happen"); 
} 

我已经打过电话finish()之前和之后startActivity(),并设置在各类旗帜意图,没有一个做我想要的。

如何强制执行登录意图?为什么startActivity()似乎没有效果,为什么只有这一项活动?

回答

0

随着startActivity()你开始异步一个新的活动,但用户将无法使用第一个活动,因为它将尽可能快地被替换。但请记住,用户可能会在短时间内看到第一个活动的标题,但内容本身不应该是可见的,但我们在此需要大约100ms或更短的时间。

如果你想跳过代码onResume()你可以使用一个简单的return;·`后

+0

如果我打电话return''startActivity()'我回到'FailActivity.onresume()',这是不是有什么我想要。基本上,有没有办法同时执行'startActivity()'? – modemuser 2014-09-27 21:01:22

+0

否,没有办法执行活动异步。回调函数'onActivityResult()'用来处理返回的Activity或更好的Activity的结果。 – rekire 2014-09-27 21:05:41

+0

如果我在'FailActivity'中的'super.onResume()'之后放置了'if(!loggedIn)return;',一切正常。谢谢! – modemuser 2014-09-27 21:07:43