网上各种办法,最后经过测试,在栈中你能获取到的只有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;       }
 

更多相关文章

  1. Android(安卓)如何判断当前线程是否是主线程
  2. Android(安卓)10.0文件存储问题
  3. android判断快捷方式是否已经创建的方法
  4. Android笔记——怎么让EditText不自动获取焦点
  5. android从手机中获取通讯录时按名称排序
  6. Android对touch事件的拦截,在View Tree上的传递顺序
  7. 获取android源码的问题
  8. Retrofit2源码分析(2) CallAdapter详解
  9. 20.Android(安卓)设备工具DeviceUtil

随机推荐

  1. 开始: 其实对Android我只是略知皮毛中的皮
  2. ROOT android 原理 基于(zergRush)
  3. Android:Service:服务的生命周期
  4. android studio升级失败提示 Connection
  5. Android(安卓)sensor架构(二)SystemSensorM
  6. chromium-cronet库的编译用于Android和io
  7. Unity3D项目引用第三方的Android(安卓)Sd
  8. Android(安卓)第三方的动态库编译到Andro
  9. 2.2 Ubuntu下安装Android(安卓)Studio
  10. Android(安卓)ListView自定义和选中效果