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()
我添加了 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()