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

Android 如何从非主活动退出Kotlin应用程序,android,kotlin,exit,Android,Kotlin,Exit,我有一个具有以下结构的应用程序: 我有一个启动器活动->MainActivity.kt,它在其onCreate中调用SplashScreen.kt 在这个SplashScreen.kt中,我从服务器下载数据,最后打开Dashboard.kt 在Dashboard.kt中,每当我按两次back键时,我都想退出应用程序 这就是我设置退出功能的方式 private fun quit(){ if (lastBackPressed + 2000 > System.currentTim

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

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

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

Dashboard.kt
中,每当我按两次back键时,我都想退出应用程序

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

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()
    }
为此,我引用了以下问题:

然而,那里的所有解决方案只能帮助我退出我的
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


->在此处按后退两次,即可退出应用程序。

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

例如,在您的案例中:

MainActivity.kt

->
SplashScreen.kt

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

如果在主活动中添加
android:noHistory=“true”
标志,则会发生以下情况:

MainActivity.kt

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

->
Dashboard.kt


->在此处按“后退”两次,您就可以退出应用程序。

在开始新的活动之前,您是否完成了以前的活动?否。谢谢这是一个愚蠢的错误>///我喜欢你只在Splash活动中下载数据的方式。。。因为这不能保证在应用程序执行期间运行。@EpicPandaForce有趣!你能详细解释一下吗?我实际上是在Splash中从我的服务器下载jsonData。此数据进一步用于创建仪表板元素。为什么不能保证运行?@Sowingfiel因为如果你从后台回来,Android可以跳过你的飞溅。看到了吗?在开始新的活动之前,你完成了之前的活动了吗?没有。谢谢这是一个愚蠢的错误>///我喜欢你只在Splash活动中下载数据的方式。。。因为这不能保证在应用程序执行期间运行。@EpicPandaForce有趣!你能详细解释一下吗?我实际上是在Splash中从我的服务器下载jsonData。此数据进一步用于创建仪表板元素。为什么不能保证运行?@Sowingfiel因为如果你从后台回来,Android可以跳过你的飞溅。看见