我有一个具有以下结构的应用程序:
我有一个启动器活动->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.kt
,MainActivity
就会再次启动并加载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
-> 在此处按两次,您将能够退出应用程序。