以前的若干写法发现到如今已经不好使了,调用之后在应用后台还是能看到APP进程,并不能杀掉APP,写法比如下面最常见的两种都不好用了:
android.os.Process.killProcess(android.os.Process.myPid())
System.exit(1)
System.gc()
现在好用的解决方案是:
1. 在Application中建一个用来存储所有界面活动list容器,界面创建的时候将新的Activity装入list,界面销毁的时候将此Activity移除list。
//在Application中定义
private var activityList = mutableListOf<Activity>()
/**
* 同样写在Application中。
*/
fun addActivity(activity: Activity) {
if (!activityList.contains(activity)) {
activityList.add(activity)
}
}
fun removeActivity(activity: Activity) {
if (activityList.contains(activity)) {
activityList.remove(activity)
}
}
fun removeAllActivity() {
activityList.forEach {
it.finish()
}
}
在新Activity的生命周期中调用上述add和remove的单方法(如下代码写在BaseActi