onResume调用了noHistory活动

时间:2014-06-15 19:33:48

标签: android lifecycle

我有两项活动,LoginActivityMainActivity

LoginActiviy是启动器活动,其目的是检查用户是否已登录,如果他已登录;转到MainActivity

虽然我将android:noHistory="true"设置为LoginActivity,但当用户退出(意味着onResume(LoginActivity)已启动)程序并再次启动时,活动的onPause会再次被调用。

我误解了noHistory的含义吗?如果是这样我该怎么做才能让操作系统忘记LoginActivity的存在?

编辑:我试图将其放在LoginActivity的{​​{1}}上,但它会调用onResume的{​​{1}},我不想要

MainActivity

LoginActivity:

onCreate

}

2 个答案:

答案 0 :(得分:0)

  

android:noHistory是否应删除活动   活动堆栈和完成(它的finish()方法调用)时   用户导航离开它并且在屏幕上不再可见 -   如果它应该完成则为“true”,否则为“false”。默认值   是“假的”。值“true”表示活动不会离开   历史痕迹。它不会保留在活动堆栈中   任务,因此用户将无法返回它。

This attribute was introduced in API Level 3.

引用文档,“它的finish()方法称为”,您是否尝试过自己完成活动?

noHistory = true表示一旦活动为该用户会话的finish(),用户将永远不会再看到它,但是,如果活动刚刚暂停而没有完成,那么在返回时它将重新启动。在你进入主要活动之前,只需完成()它,如果这是你想要的行为。

答案 1 :(得分:0)

if(!firstTime) {
    goToMainActivity();
    finish();
}

没有历史记录表明它不会让某些活动在过去的活动堆栈中注册,它不允许它跳过活动生命周期的部分内容。

如果您不想要某些代码不执行,那么您应该执行以下操作:

登录活动:

if(!firstTime) {
    Intent intent = new Intent(LoginActivity.this, MainActivity.class);
    intent. putExtra("skip", true);
    finish();
}

主要活动:(在onCreate内)

if(!getIntent().getBundle().getBoolean("skip", false)) {
    //You code that you don't want
}

这是活动生命周期,我希望它对您有益:

Activity Life Cycle