最近在做一個應用的時候,有一個需求,是當使用者當前正在打開應用的時候,這個時候後臺的服務對使用者不進行一些通知之類的東西,查了一下android的api,找到ActivityManager. getRunningTasks


仔細看getRunningTasks的文檔,裡面說獲取的是系統中"running"的所有task,"running"狀態包括已經被系統凍結的task。而且返回的這個清單是按照順序排列的,也就是說第一個肯定比第二個後運行。


getRunningTasks有個整型參數,表示返回清單的最大個數。那麼,我們如果把1作為參數給進去,那麼他返回的task就是當前運行的那個task,然後從task中獲取到最頂層的activity,這個activity就是當前顯示給使用者的那個activity了。

 
 ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
 ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
 Log.d("", "pkg:"+cn.getPackageName());
 Log.d("", "cls:"+cn.getClassName());

呵呵,用這面這段代碼就可以獲取使用者當前正在打開的應用是什麼,然後問題解決,希望對其它人有用。
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()