启动启动活动时终止所有其他先前的活动

Ruc*_*ore 5 android

在我的应用程序中,我总是希望用户从启动画面开始.例如,我的应用程序可能在后台打开,并弹出一些启动启动活动的通知.这应该终止所有以前正在运行的活动.

我通过存储所有正在运行的活动参考的列表来完成此操作.当启动启动时,它只是调用

for(runningActivity : runningActivitiesList) {
    runningActivity.finish();
}
Run Code Online (Sandbox Code Playgroud)

此解决方案效果很好.但是,Android Studio在存储对活动的引用时会向我发出内存泄漏警告.

有人可以建议我一个更好的方法,以避免内存泄漏?

mac*_*229 5

也许足够的是用清晰的堆栈启动Activity:

Intent intent = new Intent(context, clazz);
intent.setFlags(IntentCompat.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)


Ruc*_*ore 1

尝试了所有其他选项,但唯一对我有用的是:

final Intent intent = new Intent(applicationContext, SplashActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
            | IntentCompat.FLAG_ACTIVITY_CLEAR_TASK
            | Intent.FLAG_ACTIVITY_NEW_TASK);
    return IntentCompat.makeRestartActivityTask(intent.getComponent());
Run Code Online (Sandbox Code Playgroud)

请注意:该解决方案也不是完整的证明。因为,当我通过 Google Play 商店打开我的应用程序时,即使应用程序的另一个实例在后台运行,它也会启动启动活动。因此,我最终得到了同一活动的 2 个实例。