在开发类似微信语音对讲功能时,有一个缩小当前语音对讲界面,变成一个小悬浮弹窗,然后可以返回到APP的其它界面操作,此时我们就不得不把对讲界面的启动模式改为singleInstance,才能保证当前的对讲Activity和其它的Activity能够并存.当关闭对讲界面时候就得主动的去关闭任务栈,不然调用finish仅仅结束activity,那个栈回一直存在。使用系统的切换APP功能时候就看得到。下面介绍一种结束某个任务栈的方法。如下:
/**start 结束对讲界面的任务栈 start*/ val mActivityManager = getSystemService(ACTIVITY_SERVICE) as ActivityManager for (mAppTask in mActivityManager.appTasks) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { LogUtils.i(TAG, "topActivityName:${mAppTask.taskInfo.topActivity?.className} localClassName:${localClassName}") //localClassName为singleInstance的栈内的唯一activity的完整路径类名 if (mAppTask.taskInfo.topActivity?.className == localClassName) { mAppTask.finishAndRemoveTask() break } } } /**end 结束对讲界面的任务栈 end*/
finish()