最完美的退出 APP 的方式是储存所有已打开的 Activity, 在退出的时候销毁
储存所有已打开的 Activity 最简单的方式就是在 App 里注册 ActivityLifecycleCallbacks, 通过 onActivityCreated 方法提供的 Activity 来存储, 通过 onActivityDestroyed 来销毁
代码如下:
import android.app.Activity
import android.app.Application
import android.os.Bundle
class App : Application() {
override fun onCreate() {
super.onCreate()
registerActivityLifecycleCallbacks(activityLifecycleCallbacksImp)
}
class ActivityLifecycleCallbacksImp : Application.ActivityLifecycleCallbacks{
private val acts = arrayListOf<Activity>()
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
acts.add(activity)
}
override fun onActivityDestroyed(activity: Activity) {
acts.remove(activity)
}
fun exitApp() {
acts.forEach {
it.finish()
}
}
override fun onActivityStarted(activity: Activity) = Unit
override fun onActivityResumed(activity: Activity) = Unit
override fun onActivityPaused(activity: Activity) = Unit
override fun onActivityStopped(activity: Activity) = Unit
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) = Unit
}
companion object {
val activityLifecycleCallbacksImp by lazy {
ActivityLifecycleCallbacksImp()
}
fun exitApp() {
activityLifecycleCallbacksImp.exitApp()
}
}
}
使用方式:
// kotlin
App.exitApp()
// java
App.Companion.exitApp();