2012-09-17 40 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 
    }