/**
* Activity栈任务管理器
* 通常放在我们自定义Activity的基类中操作
*/
class AcitivityManager private constructor() {
private val activityStack: Stack<Activity> = Stack()
companion object {
val instance: AcitivityManager by lazy { AcitivityManager() }
}
/**
* 添加Activity
*/
fun addActivity(activity: Activity) {
activityStack.add(activity)
}
/**
* 移出存在的Activity
*/
fun removeActivity(activity: Activity) {
if (activityStack.contains(activity)) {
activity.finish()
activityStack.remove(activity)
}
}
/**
* 获取最上面的Activity
*/
fun getTopActivity(): Activity {
return activityStack.lastElement()
}
/**
* 清除Activity栈
*/
fun clearActivity() {
for (activity in activityStack) {
activity.finish()
}
activityStack.clear()
}
/*
退出应用程序
*/
fun exitApp(context: Context) {
//先清除Activity
clearActivity()
val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
//再killProcesses
activityManager.killBackgroundProcesses(context.packageName)
System.exit(0)
}
}
在Activity的基类中使用
class BaseActivity:Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//onCreate中入栈
AcitivityManager .instance.addActivity(this)
}
override fun onDestroy() {
super.onDestroy()
//onDestroy中入移除
AcitivityManager .instance.removeActivity(this)
}