码迷,mamicode.com
首页 > 移动开发 > 详细

Android 判断某一个类是否存在任务栈里面

时间:2015-07-01 14:18:29      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

在开发项目的时候,我们经常会遇到一些问题,除了设置一些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<RunningTaskInfo> 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<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, 0);
  if (list.size() == 0) {   
       // 说明系统中不存在这个activity
  }

是不是很简单,么么哒。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android 判断某一个类是否存在任务栈里面

标签:

原文地址:http://blog.csdn.net/androidstarjack/article/details/46708243

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!