Android ActivityManager 检测Service与Activity是否正在运行

检测Service是否已启动

 public static boolean isServiceRunning(String serviceClassName){ 
        final ActivityManager activityManager = (ActivityManager)Application.getContext().getSystemService(Context.ACTIVITY_SERVICE); 
        final List<RunningServiceInfo> services = activityManager.getRunningServices(Integer.MAX_VALUE); 

        for (RunningServiceInfo runningServiceInfo : services) { 
            if (runningServiceInfo.service.getClassName().equals(serviceClassName)){ 
                return true; 
            } 
        } 
        return false; 
     }

检测应用程序员是否已开启

权限

<uses-permission android:name="android.permission.GET_TASKS"/>

代码----判断Activity是否正在运行

ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> list = am.getRunningTasks(100);
boolean isAppRunning = false;
String MY_PKG_NAME = "com.cyberblue.iitag";
for (RunningTaskInfo info : list) {
	if (info.topActivity.getPackageName().equals(MY_PKG_NAME) || info.baseActivity.getPackageName().equals(MY_PKG_NAME)) {
		isAppRunning = true;
		Log.i(TAG,info.topActivity.getPackageName() + " info.baseActivity.getPackageName()="+info.baseActivity.getPackageName());
		break;
	}
}
/**
* 检测某Activity是否在当前Task的栈顶
*/
public boolean isTopActivy(String cmdName){
        ActivityManager manager = (ActivityManager) context.getSystemService(ACTIVITY_SERVICE);
        List<RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(1);
        String cmpNameTemp = null;
        if(null != runningTaskInfos){
                cmpNameTemp=(runningTaskInfos.get(0).topActivity).toString);
                Log.e("cmpname","cmpname:"+cmpName);
        }
       if(null == cmpNameTemp)return false;
       return cmpNameTemp.equals(cmdName);
}

下面代码检测当前Activity是不是栏启动器

    private  boolean isLauncherRunnig(Context context) {  
            boolean result = false ;  
            List<String> names = getAllTheLauncher();  
            ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE) ;  
            List<ActivityManager.RunningAppProcessInfo> appList = mActivityManager.getRunningAppProcesses() ;  
            for (RunningAppProcessInfo running : appList) {  
                    if (running.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {  
                            for (int i = 0; i < names.size(); i++) {  
                                    if (names.get(i).equals(running.processName)) {  
                                            result = true ;  
                                            break;  
                                    }  
                            }  
                    }  
            }  
            return result ;  
    }

----------------判断App是否正在运行---------------------

/**
	 * 判断app是否正在运行
	 * @param ctx
	 * @param packageName
	 * @return
	 */
	public boolean appIsRunning(Context ctx,String packageName)
	{
		ActivityManager am = (ActivityManager) ctx.getSystemService(ACTIVITY_SERVICE);
		
		List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();
		
		if(runningAppProcesses!=null)
		{
			for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses) {
				
				if(runningAppProcessInfo.processName.startsWith(packageName))
				{
					return true;
				}
			}
		}
		
		return false;
	}
	/**
	 * app 是否在后台运行
	 * @param ctx
	 * @param packageName
	 * @return
	 */
	public boolean appIsBackgroundRunning(Context ctx,String packageName)
	{
		ActivityManager am = (ActivityManager) ctx.getSystemService(ACTIVITY_SERVICE);
		
		List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();
		
		if(runningAppProcesses!=null)
		{
			for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses) {
				
				if(runningAppProcessInfo.processName.startsWith(packageName))
				{
					return runningAppProcessInfo.importance!=RunningAppProcessInfo.IMPORTANCE_FOREGROUND && runningAppProcessInfo.importance!=RunningAppProcessInfo.IMPORTANCE_VISIBLE; //排除无界面的app
				}
			}
		}
		
		return false;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值