如何从非主活动退出 Kotlin 应用程序



我有一个具有以下结构的应用程序:

我有一个启动器活动->MainActivity.kt,它在其onCreate中调用SplashScreen.kt

在这个SplashScreen.kt,我从我的服务器下载数据,然后最后打开Dashboard.kt

Dashboard.kt,每当我按两次后退时,我想退出应用程序。

这就是我设置退出功能的方式

private fun quit(){
if (lastBackPressed + 2000 > System.currentTimeMillis()){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
this.finishAffinity()
} else{
this.finish()
exitProcess(0)
}
}
else Toast.makeText(
context,
"Press once again to exit!",
Toast.LENGTH_SHORT
).show()
lastBackPressed = System.currentTimeMillis()
}

为此,我参考了以下问题:

  • 退出申请是不是不受欢迎的?

  • 如何在 Kotlin 中关闭安卓应用程序

  • 如何以编程方式退出安卓应用程序

但是,那里的所有解决方案只能帮助我戒掉Dashboard.kt

一旦退出Dashboard.ktMainActivity就会再次启动并加载SplashScreen.kt,这反过来又加载 Dashboard.kt(再次(。

有没有更好、更有效的方法可以直接退出Dashboard.kt活动?

在应用的清单文件中,在主活动中添加android:noHistory="true"标志。 这将允许您的应用程序打开 MainActivity,然后在调用另一个活动时将其从堆栈中删除。

例如,在您的情况下:

MainActivity.kt

->SplashScreen.kt

->Dashboard.kt(MainActivity.kt保留在堆栈中。

如果您在主活动中添加android:noHistory="true"标志,则会发生什么,如下所示:

MainActivity.kt

->SplashScreen.kt(MainActivity.kt将从堆栈中删除。

->Dashboard.kt

-> 在此处按两次,您将能够退出应用程序。

最新更新