背景
- 在写用户登出的时候考虑到finish多个activity很麻烦所以考虑对其进行统一管理
AppManager
class AppManager {
companion object{
private val activityStack = LinkedList<Activity>()
fun addActivity(activity: Activity){
activityStack.push(activity)
}
fun finishOneActivity(activityName: String) {
for (activity in activityStack) {
val name = activity.javaClass.name
if (name == activityName) {
if(activity.isFinishing){
activityStack.remove(activity)
}else{
activity.finish()
}
}
}
}
fun finishOtherActivity(activityName: String) {
for (activity in activityStack) {
val name = activity.javaClass.name
if (name != activityName) {
if(activity.isFinishing){
activityStack.remove(activity)
}else{
activity.finish()
}
}
}
}
fun finishAllActivity() {
for (activity in activityStack) {
if (!activity.isFinishing) {
activity.finish()
}
}
activityStack.clear()
}
fun removeActivity(activity: Activity){
activityStack.remove(activity)
}
}
}
BaseActivity
open class BaseActivity:AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
AppManager.addActivity(this)
}
override fun onDestroy() {
super.onDestroy()
AppManager.removeActivity(this)
}
}