我有两项活动,LoginActivity
和MainActivity
。
LoginActiviy
是启动器活动,其目的是检查用户是否已登录,如果他已登录;转到MainActivity
。
虽然我将android:noHistory="true"
设置为LoginActivity
,但当用户退出(意味着onResume(LoginActivity)
已启动)程序并再次启动时,活动的onPause
会再次被调用。
我误解了noHistory
的含义吗?如果是这样我该怎么做才能让操作系统忘记LoginActivity
的存在?
编辑:我试图将其放在LoginActivity
的{{1}}上,但它会调用onResume
的{{1}},我不想要
MainActivity
LoginActivity:
onCreate
}
答案 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
}
这是活动生命周期,我希望它对您有益: