这一阵新到的这个公司两个项目准备开始重构 需要用到 AppManager管理Activity 通过Stack 实现先进先出,后进后出的原则
实现包括:添加Activity到堆栈、获取当前的Activity(堆栈最后一个)、结束当前的Activity(堆栈最后一个)、结束指定的Activity、结束指定类名的Activity、结束所有的Activity等方法。
object AppManager {
private var mActivities: Stack<Activity> = Stack()
/**
* 添加Activity到堆栈
*/
fun attach(activity: Activity) {
mActivities.add(activity)
}
/**
* 将指定Activity移除
*/
fun detach(activity: Activity) {
mActivities.remove(activity)
}
/**
* Get current activity (the last into Stack)
*/
fun currentActivity(): Activity {
return mActivities.lastElement()
}
/**
* Finish current activity (the last into Stack)
*/
fun finishActivity() {
val a = mActivities.lastElement()
a.finish()
}
/**
* Finish the input activity
*/
fun finishActivity(activity: Activity?) {
var size = -1
for (i in mActivities.indices) {
val a = mActivities[i]
if (a == activity) {
size = i
break
}
}
if (size != -1) {
mActivities.removeAt(size)
activity?.finish()
}
}
/**
* finish the activity of afferent class
*/
fun finishActivity(cls: Class<*>) {
for (i in mActivities.indices) {
val a = mActivities[i]
if (a.javaClass.canonicalName == cls.canonicalName) {
mActivities.removeAt(i)
a.finish()
break
}
}
}
/**
* Judge the input Activity is live or die
*/
fun isLive(activity: Activity): Boolean {
return mActivities.contains(activity)
}
/**
* Judge the Activity instance of the input class is live or die
* (the Activity can have more than one object)
*/
fun isLive(cls: Class<*>): Boolean {
mActivities.forEach {
if (it.javaClass.canonicalName == cls.canonicalName)
return true
}
return false
}
/**
* Finish all activity of th mActivities and make mActivities clear
*/
fun finishAllActivity() {
mActivities.forEach {
it?.finish()
}
mActivities.clear()
}
/**
* app exit
*/
@SuppressLint("MissingPermission")
fun appExit(context: Context) {
try {
finishAllActivity()
val activityMgr = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
activityMgr.killBackgroundProcesses(context.packageName)
System.exit(0)
} catch (e: Exception) {
}
}
}
直接copy下来就可以用了 英文不是很好 不过还在学习中, 注释看看就好
网友评论