2012-09-17 37 views
2

我正在運行一個服務,該服務檢查當前哪個應用程序正在前臺運行。以下代碼提供了當前的前臺應用程序名稱。比較android服務中的變量值

ActivityManager activityManager = (ActivityManager) 
getSystemService(Context.ACTIVITY_SERVICE); 
ListappProcesses=activityManager.getRunningTasks(1); 

//get foreground App name 
foregroundApp=appProcesses.get(0).topActivity.getPackageName(); 

現在我把這段代碼放在一個服務裏面。如果前臺應用程序已更改,則該服務每15秒檢查一次。如果前臺應用程序更改,則前臺變量會更新。如何比較foregroundApp變量的值何時發生變化?

回答

0

您可以將最後一個軟件包名稱保存爲靜態字符串,也可以使用SharedPreferences保存它......在下一個檢查中,您只需比較字符串(使用String.compare)。

0

您可以在另一個字符串應用程序的名字存儲,並與foregroundApp串檢查

+0

我試圖在另一個字符串存儲。但每次服務啓動時,字符串都會使用之前的值進行初始化。如何解決這個問題。就像我想以這樣的方式保存,以便下次啓動服務時該值保持不變? – zafi005

2
boolean isChanged = false; 
    String packageName = appProcesses.get(0).topActivity.getPackageName(); 
    if(!packageName.equals(foregroundApp)) { 
     foregroundApp = packageName; 
     isChanged = true; 
    } 

    if(isChanged) { 
     // do your implementation if another app comes to foreground 
    }