我有一个场景。我试图使用我创建的PinActivity
锁定我的应用程序。我正在运行一个具有5分钟计数器计时器的服务。如果用户5分钟内未在应用中进行任何活动。我将向他展示PINActivity,他必须解锁并输入该应用程序。我正在这样启动PINActivity
:
Intent loginIntent = new Intent(this, PINActivity.class);
loginIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(loginIntent);
因此,当用户返回到应用程序并看到
PINActivity
时,他将对其解锁并进入应用程序。但是,如果用户没有输入PIN并再次离开应用理想状态超过5分钟该怎么办(注意:当用户将应用带到前台时,我的服务会启动计数器计时器)。我不想在顶部添加同一PINActivity
的多个实例。如何确定顶部只有一个PINActivity
? 最佳答案
您应该使用FLAG_ACTIVITY_SINGLE_TOP
。如果堆栈顶部已经存在PINActivity
实例,这将阻止Android启动PINActivity
。
Intent loginIntent = new Intent(this, PINActivity.class);
loginIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_SINGLE_TOP);
startActivity(loginIntent);
请不要尝试像其他人建议的那样使用特殊的启动模式,例如
singleTask
或singleInstance
。这将无济于事,并使您的问题复杂化。您也可以在清单条目中为
android:launchMode="singleTop"
指定PINActivity
。与FLAG_ACTIVITY_SINGLE_TOP
具有相同的效果。