OnBackPressed 重新创建 activity 而不是完成它
OnBackPressed recreates the activity instead of finishing it
@Override
public void onBackPressed() {
if (searchView.isSearchOpen()) {
searchView.closeSearch();
} else if (activeFragment != homeFragment) {
goToHomeFragment();
} else {
super.onBackPressed();
finish();
}
}
在上面的代码中,当到达 else 块时,activity 重新创建自身而不是完成自身并退出。托管的 activity 有 4 个片段,但我想这些片段没有任何关系。那么知道出了什么问题吗?有什么建议么?感谢您的关注。
已编辑:根据 Manzurul Hoque Rumi 的说法,moveTaskToBack(true) 确实起到了作用。问题无效。我要感谢所有回答我问题的人。
删除 finish()
并尝试
@Override
public void onBackPressed() {
if (searchView.isSearchOpen()) {
searchView.closeSearch();
} else if (activeFragment != homeFragment) {
goToHomeFragment();
} else {
moveTaskToBack(true);
}
}
您可以尝试在您要关闭的 activity 部分添加清单 android:noHistory="true"
<activity
android:name=".DeviceControlActivity"
android:screenOrientation="landscape"
android:noHistory="true"
/>
如果您将根 activity 定义为可搜索 activity 您应该在清单中将其启动模式定义为 singleTop。
android:launchMode="singleTop"
@Override
public void onBackPressed() {
if (searchView.isSearchOpen()) {
searchView.closeSearch();
} else if (activeFragment != homeFragment) {
goToHomeFragment();
} else {
finish();
}
}
确保您的 activity 没有被多次创建,仅调用 finish() 并删除 super.onBackPressed()
@Override
public void onBackPressed() {
if (searchView.isSearchOpen()) {
searchView.closeSearch();
} else if (activeFragment != homeFragment) {
goToHomeFragment();
} else {
super.onBackPressed();
finish();
}
}
在上面的代码中,当到达 else 块时,activity 重新创建自身而不是完成自身并退出。托管的 activity 有 4 个片段,但我想这些片段没有任何关系。那么知道出了什么问题吗?有什么建议么?感谢您的关注。
已编辑:根据 Manzurul Hoque Rumi 的说法,moveTaskToBack(true) 确实起到了作用。问题无效。我要感谢所有回答我问题的人。
删除 finish()
并尝试
@Override
public void onBackPressed() {
if (searchView.isSearchOpen()) {
searchView.closeSearch();
} else if (activeFragment != homeFragment) {
goToHomeFragment();
} else {
moveTaskToBack(true);
}
}
您可以尝试在您要关闭的 activity 部分添加清单 android:noHistory="true"
<activity
android:name=".DeviceControlActivity"
android:screenOrientation="landscape"
android:noHistory="true"
/>
如果您将根 activity 定义为可搜索 activity 您应该在清单中将其启动模式定义为 singleTop。
android:launchMode="singleTop"
@Override
public void onBackPressed() {
if (searchView.isSearchOpen()) {
searchView.closeSearch();
} else if (activeFragment != homeFragment) {
goToHomeFragment();
} else {
finish();
}
}
确保您的 activity 没有被多次创建,仅调用 finish() 并删除 super.onBackPressed()