我有一个主要活动A,它将调用另一个活动B,其oncreate()在下面提到。当我在活动B中按主页按钮并按下最近的应用程序时,永远不会设置标志FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY。我使用的是三星nexus 10(Android 4.4.2)。
protected void onStart() {
super.onCreate(savedInstanceState);
if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0)
{
//Call Main Activity.
}
else
{
//Continue creating this activity
}
}
当我将if块放在onCreate()中时,当我从最近的应用程序打开我的应用程序时,它永远不会被调用。
编辑1 : 让我解释一下我想做什么。每当用户使应用程序转到后台(锁定屏幕,按下主页按钮等)时,我想在应用程序到达前台时调用特定活动(用于身份验证)。
答案 0 :(得分:6)
我觉得你很困惑。如果您的主要活动启动了ActivityB,则会调用ActivityB.onCreate()
并且不会设置Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
。现在,将ActivityB放在前台,按HOME按钮。此任务被推送到后台。稍后,用户打开最近任务列表并选择您的应用程序。任务(ActivityB在顶部)只是放到前台。 ActivityB 未重新创建,因此仍未设置Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
。 ActivityB.onCreate()`不再被调用。
Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY
仅在用户从最近任务列表中选择应用时创建活动的新实例时设置。在大多数情况下,这将是用户在所有活动结束后再次(从头开始)启动应用程序的时间。