如果在您的应用程序中,您正在执行以下操作:
Intent intent = new Intent(this, HomeActivity.class);
startActivity(intent);
然后,确实,Android 将创建一个新实例HomeActivity并将其放在活动堆栈的顶部。这将导致多个实例HomeActivity这如果那不是您想要的(并且可能不是您想要的),那么有几种可能的方法来处理这个问题。
由于我不知道您的应用程序并且您没有发布任何代码或任何内容,因此我需要做出一些假设。我将假设您HomeActivity是用于启动应用程序的第一个活动(也称为根活动)。我还将假设HomeActivity启动其他活动并且在启动其他活动时不调用finish()自身。
如果是这种情况,那么您可以HomeActivity通过执行以下操作从应用程序中的任何活动返回到您的:
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
假设HomeActivity未在清单中定义android:launchMode="singleTop",这将导致活动堆栈中的所有活动(包括HomeActivity)完成,并将创建一个新实例HomeActivity作为堆栈中唯一的活动。
如果您只想删除除现有实例之外的所有活动HomeActivity并返回该实例,则需要执行以下操作:
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
这将导致活动堆栈(除外HomeActivity)中的所有活动完成,并将调用onNewIntent()然后调用onResume()您现有的实例HomeActivity.
如果我的假设不正确,请纠正我,我可以提出其他建议。