Android(安卓)判断栈中Activity是否存在
16lz
2021-01-26
网上各种办法,最后经过测试,在栈中你能获取到的只有baseActivity和topActivity,如果你需要判断的Activity在栈别的位置,那么根本判断不了,因为返回的只有栈中Activity的个数,并没有Activity的名字。
private boolean isExistMainActivity(Class<?> activity) { Intent intent = new Intent(this, activity); ComponentName cmpName = intent.resolveActivity(getPackageManager()); boolean flag = false; if (cmpName != null) { // 说明系统中存在这个activity ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); List taskInfoList =am.getRunningTasks(10);// 这里获取的是APP栈的数量,一般也就两个 ActivityManager.RunningTaskInfo runningTaskInfo = taskInfoList.get(0);// 只是拿 当前运行的栈 int numActivities = taskInfoList.get(0).numActivities; for (ActivityManager.RunningTaskInfo taskInfo : taskInfoList) { if (taskInfo.baseActivity.equals(cmpName)) {// 说明它已经启动了 flag = true; break;//跳出循环,优化效率 } } } return flag; }
更多相关文章
- Android(安卓)如何判断当前线程是否是主线程
- Android(安卓)10.0文件存储问题
- android判断快捷方式是否已经创建的方法
- Android笔记——怎么让EditText不自动获取焦点
- android从手机中获取通讯录时按名称排序
- Android对touch事件的拦截,在View Tree上的传递顺序
- 获取android源码的问题
- Retrofit2源码分析(2) CallAdapter详解
- 20.Android(安卓)设备工具DeviceUtil