2011-05-26 72 views

回答

5

你可以得到正在运行的进程的列表,并检查,如果你是在前台用下面的代码:

ActivityManager actMngr = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 

List<RunningAppProcessInfo> runningAppProcesses = actMngr.getRunningAppProcesses(); 
for (RunningAppProcessInfo pi : runningAppProcesses) { 
    if (getPackageName().equals(pi.processName)) { 

     boolean inForeground = pi.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND; 
    } 
} 

时请在http://developer.android.com/reference/android/app/ActivityManager.RunningAppProcessInfo.html

+0

这很好,谢谢。 – Lysandus 2011-05-26 14:20:28

+0

您可能需要IMPORTANCE_VISIBLE,而不是FOREGROUND,以防您的应用程序可见,但在其上有另一个服务的对话框。 – 2013-04-04 01:23:19

+0

这对我不起作用 – 2014-10-22 19:27:53

3

Refreshing an Activity from service when Active 几个选项:

•有活动注册在的onResume(该服务的监听对象),并在onPause(删除)

•发送私人广播,拿起由通过registerReceiver()活动时,它是在前台

•有活动提供一个“等待结果”式的PendingIntent到服务

•使用ResultRe ceiver

•使用ContentProvider的,与该活动举办到光标从供应商,服务更新提供商

看到这里https://github.com/commonsguy/cw-advandroid/tree/master/AdvServices/了几个例子。

1

要检查服务是否正在运行使用

ActivityManager manager = (ActivityManager) MyApp.getSharedApplication().getSystemService(Context.ACTIVITY_SERVICE); 
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
     if (CTConstants.MyService_Name.equals(service.service.getClassName())) { 
      //Your service is running 
     } 
    } 

如果您不想将此作为普通功能进行概括,请将第一行替换为

ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
相关问题