我正在开发一个用户可以登录的Android应用程序。为此,每个活动都会延伸BaseActivity
。在onResume()
方法中,我检查用户是否已登录,如果不是,则通过调用LoginActivity
启动startActivity()
。
这适用于除了一项活动之外的所有活动:让我们称之为FailActivity
。
恢复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 :(得分:0)
使用startActivity()
启动异步新Activity,但用户将无法使用第一个Activity,因为它将尽快更换。但请记住,用户可能会在短时间内看到第一个活动的标题,但内容本身不应该是可见的,但我们在这里大约需要100毫秒。
如果您想跳过onResume()
中的代码,可以使用简单的return;
·