startActivity()不立即调用?

时间:2014-09-27 20:29:05

标签: android android-intent

我正在开发一个用户可以登录的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()似乎没有效果,为什么只有这一项活动?

1 个答案:

答案 0 :(得分:0)

使用startActivity()启动异步新Activity,但用户将无法使用第一个Activity,因为它将尽快更换。但请记住,用户可能会在短时间内看到第一个活动的标题,但内容本身不应该是可见的,但我们在这里大约需要100毫秒。

如果您想跳过onResume()中的代码,可以使用简单的return;·