Android判斷服務是否在執行

我叫阿狸貓發表於2014-07-21
import java.util.List;

import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.content.Context;

public class ServiceUtil {
	
	/**
	 * 根據服務名稱和正在執行的所有服務名稱進行遍歷比較,如果有一樣的則表示此服務正在執行
	 * @param context
	 * @param serviceName
	 * @return
	 */
	public static boolean isServiceRunning(Context context, String serviceName) {
		ActivityManager manager = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);
		/*
		 * 獲得正在執行的100個服務,如果執行服務個數大於等於100,則只返回100個,如果不足100個,則把所有執行的服務都返回
		 * RunningServiceInfo物件封裝了服務的資訊  例如執行時間等  
		 */
		List<RunningServiceInfo> infos = manager.getRunningServices(100);
		for (RunningServiceInfo runningServiceInfo : infos) {
			//獲得正在執行服務的全類名
			String name = runningServiceInfo.service.getClassName();
			if(serviceName.equals(name)){//如果和傳進來的服務全類名一致,則表示此服務正在執行
				return true;
			}
		}
		return false;
	}
}

相關文章