我有一个退出屏幕布局,我想将其显示 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
但这就是我在这两种不同情况下从背压中得到的结果
按返回主要活动
主要活动 > 退出屏幕 (Studk) > 再按一下 > 退出
按回片段
Fragment > 退出屏幕(卡住)> 再按一次 > 退出
如果您可以看到即使在退出屏幕上我也必须按回键,该屏幕应该在 2 秒后自动消失,而且退出屏幕也出现在片段后按键上,最初应该导航回主要活动
编辑1:-对于场景1,我还使用了finishaffinity()而不是finish(),但这似乎也不起作用
问题似乎在于后退按钮按下的处理和退出屏幕显示的时间。让我们调整代码以确保所需的流程:
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秒后完成。这应该确保在应用程序关闭之前退出屏幕显示指定的持续时间。
但是,如果问题仍然存在,可能还有其他因素影响流程,例如片段的行为和活动生命周期。确保片段事务得到正确处理,并且应用程序流程中没有冲突的操作。