最完美的退出 APP 的方式是储存所有已打开的 Activity, 在退出的时候销毁
储存所有已打开的 Activity 最简单的方式就是在 App 里注册 ActivityLifecycleCallbacks, 通过 onActivityCreated 方法提供的 Activity 来存储, 通过 onActivityDestroyed 来销毁
代码如下:
import android.app.Activityimport android.app.Applicationimport android.os.Bundleclass 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) = Unitoverride fun onActivityResumed(activity: Activity) = Unitoverride fun onActivityPaused(activity: Activity) = Unitoverride fun onActivityStopped(activity: Activity) = Unitoverride fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) = Unit}companion object {val activityLifecycleCallbacksImp by lazy {ActivityLifecycleCallbacksImp()}fun exitApp() {activityLifecycleCallbacksImp.exitApp()}}}
使用方式:
// kotlinApp.exitApp()// javaApp.Companion.exitApp();
