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()