如何添加退出屏幕

问题描述 投票:0回答:1

我有一个退出屏幕布局,我想将其显示 2 秒,然后关闭应用程序

目前没有实现我的应用程序流程是这样的

Main Activity (Only One Activity) > Recycleview > Fragment

回流是这样的

Fragment > Main Acivity > Exit

现在我正在尝试使用此代码

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
            @Override
            public void handleOnBackPressed() {
                exitAppWithDelay();

            }
        });
    }

 private void exitAppWithDelay() {
        Intent intent = new Intent(MainActivity.this, GoodbyeScreen.class);
        startActivity(intent);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {

                finish(); 
            }
        }, EXIT_DELAY);
    }

但是这个剂量似乎工作正常,我的预期流程是

Fragment > Main Activity > ExitScree (2 Sec) > Exit

但这就是我在这两种不同情况下从背压中得到的结果

  1. 按返回主要活动

    主要活动 > 退出屏幕 (Studk) > 再按一下 > 退出

  2. 按回片段

    Fragment > 退出屏幕(卡住)> 再按一次 > 退出

如果您可以看到即使在退出屏幕上我也必须按回键,该屏幕应该在 2 秒后自动消失,而且退出屏幕也出现在片段后按键上,最初应该导航回主要活动

编辑1:-对于场景1,我还使用了finishaffinity()而不是finish(),但这似乎也不起作用

android android-activity
1个回答
0
投票

问题似乎在于后退按钮按下的处理和退出屏幕显示的时间。让我们调整代码以确保所需的流程:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
        @Override
        public void handleOnBackPressed() {
            exitAppWithDelay();
        }
    });
}

private void exitAppWithDelay() {
    // Display the exit screen for 2 seconds
    Intent intent = new Intent(MainActivity.this, GoodbyeScreen.class);
    startActivity(intent);
    
    // Delay the finishing of MainActivity
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            // Finish the MainActivity after 2 seconds
            finish();
        }
    }, 2000); // 2000 milliseconds = 2 seconds
}

在此代码中,

exitAppWithDelay()
方法启动
GoodbyeScreen
活动,然后安排
MainActivity
在2秒后完成。这应该确保在应用程序关闭之前退出屏幕显示指定的持续时间。

但是,如果问题仍然存在,可能还有其他因素影响流程,例如片段的行为和活动生命周期。确保片段事务得到正确处理,并且应用程序流程中没有冲突的操作。

© www.soinside.com 2019 - 2024. All rights reserved.