当Activity被启动时,如果它的launchMode属性被设置为standard,则会创建一个新的实例,并将其放在一个新的任务栈中。当用户从任务栈中选择一个Activity时,该Activity将成为活动状态,并且任务栈将成为当前任务。如果用户返回到任务栈,并选择相同的Activity,则将创建一个新的实例,其影响可能会导致内存泄漏和性能问题。
为了解决这个问题,我们可以通过更改Activity的launchMode属性为singleTask或singleInstance来确保只有一个实例运行。另外,我们也可以使用Intent标志FLAG_ACTIVITY_REORDER_TO_FRONT或FLAG_ACTIVITY_CLEAR_TOP来操纵任务栈中的Activity。
示例代码:
//设置Activity为singleInstance
//使用Intent标志FLAG_ACTIVITY_CLEAR_TOP Intent intent = new Intent(this, MyActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);