activity统一堆栈管理


背景

  • 在写用户登出的时候考虑到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 //activity的类名
                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)
    }
}

文章作者: Lao Wu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Lao Wu !
评论
  目录