Android 判斷某一個類是否存在任務棧裡面

來源:互聯網
上載者:User

標籤:

在開發項目的時候,我們經常會遇到一些問題,除了設定一些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 判斷某一個類是否存在任務棧裡面

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.