在开发项目的时候,我们经常会遇到一些问题,除了设置一些Activity的启动模式之外,好需要得到这个类是否被启动过,判断某一个类是否存在任务栈里面 这个时候,我们就可以用到下面的方法:
/**     * 判断某一个类是否存在任务栈里面     * @return     */    private boolean isExsitMianActivity(Class<?> cls){        Intent intent = new Intent(this, cls);          ComponentName cmpName = intent.resolveActivity(getPackageManager());          boolean flag = false;          if (cmpName != null) { // 说明系统中存在这个activity              ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);              List taskInfoList = am.getRunningTasks(10);              for (RunningTaskInfo taskInfo : taskInfoList) {                  if (taskInfo.baseActivity.equals(cmpName)) { // 说明它已经启动了                   flag = true;                      break;  //跳出循环,优化效率                }              }          }  return flag;      }    /**     * 进行逻辑处理     */    public void dealWithIntent(){     if(isExsitMianActivity(MainActivity.class)){//存在这个类      //进行操作     }else{//不存在这个类      //进行操作     }    }

另外还有:
一、根据包名判断应用是否存在

public boolean checkApplication(String packageName) {  if (packageName == null || "".equals(packageName)){      return false;  }  try {      ApplicationInfo info = getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES);      return true;  } catch (NameNotFoundException e) {      return false;  }}



二、判断Activity是否存在

 

 Intent intent = new Intent();  intent.setClassName("包名", "类名");

 

方法一:
  

if (getPackageManager().resolveActivity(intent, 0) == null) {         // 说明系统中不存在这个activity  }

方法二:
 

 if(intent.resolveActivity(getPackageManager()) == null) {         // 说明系统中不存在这个activity  }

方法三:
  

List list = getPackageManager().queryIntentActivities(intent, 0);  if (list.size() == 0) {          // 说明系统中不存在这个activity  }

是不是很简单,么么哒。

更多相关文章

  1. android 判断service是否开启
  2. android 网络
  3. Android中判断网络功能是否可用
  4. JS判断客户端是否是iOS或者Android
  5. 通过JS或PHP检测Android
  6. Android判断当前的android设备是否处于联网状态
  7. android:screenOrientation的说明
  8. android 布局文件属性说明
  9. Android(安卓)ImageView配置android:layout_height="wrap_conten

随机推荐

  1. 永久破解Tattoo root权限
  2. android图片加载处理
  3. net_adm:names() 能得到所有的节点名
  4. 【Android】RecyclerView
  5. android获取手机号
  6. adnroid 学习笔记(一)
  7. 记录android应用程序使用的次数 android
  8. Android(安卓)下载APP完成后,打开APP完成
  9. Android中实现图片的拖拽显示
  10. Android(安卓)设置壁纸被拉伸(固定壁纸 )