美文网首页
Activity栈管理

Activity栈管理

作者: 懇_ | 来源:发表于2020-03-28 16:51 被阅读0次

毕设中需要进入A关闭B页面,于是想到的使用Activity管理器,之前使用的是用List<T>存放每一个Activity,现在在网上看到Stack<T>是更符合Activity管理逻辑 “后进先出”,因为不是很了解Stack<T>,所以感觉两者使用使用上大致相同

class ActivitysManager {

    private val activityStack : Stack<Activity> = Stack()
    //创建静态方法获取ActivitysManager 
    companion object {
        val instance : ActivitysManager by lazy { ActivitysManager() }
    }
    
    //指定类名关闭Activity
    fun finishActivity(className : String){
        for (activity in activityStack){
            if((activity::class.java.simpleName) == className){
                activity.finish()
                return
            }

        }
    }

    fun addActivity(activity : Activity){
        activityStack.add(activity)
    }

    fun removeActivity(activity: Activity){
        activityStack.remove(activity)
    }

    fun getTopActivity():Activity{
        return activityStack.lastElement()
    }

    fun clearActivity(){
        activityStack.forEach { it.finish() }
        activityStack.clear()
    }

    fun exitAPP(context: Context){
        clearActivity()
        val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
        activityManager.killBackgroundProcesses(context.packageName)
        exitProcess(0)
    }
}

相关文章

网友评论

      本文标题:Activity栈管理

      本文链接:https://www.haomeiwen.com/subject/kuksuhtx.html