我添加了REORDER_TO_FRONT标志,以将我的现有活动置于顶部,而不是创建新实例。但它调用活动的 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);
谢谢
你只需要将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()
.
如果您想关闭所有其他活动并仅启动主要活动,这应该对您有用:
Intent intent = new Intent(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
希望这对:)有所帮助
无需清除当前活动并显示以前的活动。只需使用如下所示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()
方法从后退堆栈中删除当前活动,并显示存储在后退堆栈中的先前活动!