如何从 Non-Main Activity 退出 Kotlin 应用程序
How do I exit a Kotlin app from Non-Main Activity
我有一个具有以下结构的应用程序:
我有一个启动器 Activity -> 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()
}
为此,我参考了以下问题:
Is quitting an application frowned upon?
How to quit android application programmatically
然而,那里所有的解决方案,只能帮助我戒烟 Dashboard.kt
一旦 Dashboard.kt
退出,MainActivity
将再次启动并加载 SplashScreen.kt
,进而加载 Dashboard.kt(再次)。
有没有更好更有效的退出应用程序的方法,直接从 Dashboard.kt
activity?
在应用程序的清单文件中,在主 activity 中添加 android:noHistory="true"
标志。这将允许您的应用程序打开 MainActivity,然后在调用另一个 activity 时将其从堆栈中删除。
例如你的情况:
MainActivity.kt
-> SplashScreen.kt
-> Dashboard.kt
(MainActivity.kt
保留在堆栈中。)
如果你在主 activity 中添加 android:noHistory="true"
标志,那么会发生如下情况:
MainActivity.kt
-> SplashScreen.kt
(MainActivity.kt
将从堆栈中移除。)
-> Dashboard.kt
-> 在此处按两次后退,您将能够退出该应用程序。
我有一个具有以下结构的应用程序:
我有一个启动器 Activity -> 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()
}
为此,我参考了以下问题:
Is quitting an application frowned upon?
How to quit android application programmatically
然而,那里所有的解决方案,只能帮助我戒烟 Dashboard.kt
一旦 Dashboard.kt
退出,MainActivity
将再次启动并加载 SplashScreen.kt
,进而加载 Dashboard.kt(再次)。
有没有更好更有效的退出应用程序的方法,直接从 Dashboard.kt
activity?
在应用程序的清单文件中,在主 activity 中添加 android:noHistory="true"
标志。这将允许您的应用程序打开 MainActivity,然后在调用另一个 activity 时将其从堆栈中删除。
例如你的情况:
MainActivity.kt
-> SplashScreen.kt
-> Dashboard.kt
(MainActivity.kt
保留在堆栈中。)
如果你在主 activity 中添加 android:noHistory="true"
标志,那么会发生如下情况:
MainActivity.kt
-> SplashScreen.kt
(MainActivity.kt
将从堆栈中移除。)
-> Dashboard.kt
-> 在此处按两次后退,您将能够退出该应用程序。