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可以跳过你的飞溅。看见