Activity 正在重新创建,我想将现有的放在前面

Activity is creating again when i want to bring existing one to front

我添加了 REORDER_TO_FRONT 标志,将我现有的 activity 置于顶部,而不是创建新实例。但是它调用了 activity 的 onCreate 方法,而不是 MainActivity 中的 onNewIntent。如果我在 Menifest 中添加 launchMode="singleTop",那么工作正常。但我不想添加 singleTop,因为在某些情况下,如果用户在最小化模式下单击应用程序图标,应用程序将重新启动而不是从同一位置恢复。

    Intent intent = MainActivity.newIntent(context);
    intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);

谢谢

无需清除当前activity,显示上一个activity。只需使用 finish() 方法,如下所示:

您可以在您的 onBackPressed()toolbar 后退按钮上使用它:

onCreate() 之外使用此代码:

@Override
public void onBackPressed() {
    finish(); //closes current activity
}

toolbar:

toolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
         finish(); //close current activity
    }
});

单击 Android 后退按钮时调用 onBackPressed() 方法。它的默认值是 super.onBackPressed() 也调用了 finish() 方法!本例仅供参考

单击工具栏后退按钮时调用toolbar.setNavigationOnClickListener(...) 方法。但是为此你必须在 onCreate() 方法的代码中添加这些行:

Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);

finish()方法从backstack中删除当前activity并显示backstack中存储的先前活动!

如果您想关闭所有其他活动并只启动主要活动 activity,这应该适合您:

Intent intent = new Intent(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

希望对您有所帮助:)

您只需将 SINGLE_TOP 标志添加到您的 Intent,如下所示:

Intent intent = MainActivity.newIntent(context);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

这将从堆栈中移除所有活动,返回到 MainActivity 的现有实例。它不会创建 MainActivity 的新实例或调用 onCreate()。它将在 MainActivity().

中调用 onNewIntent()