您的位置:首页 > 移动开发

如何判断Activity,Service,App是否在运行?

2017-12-26 20:30 344 查看


转至http://blog.csdn.net/zhangfei_jiayou/article/details/21240089


如何判断Activity,Service,App是否在运行?

原创 2014年03月14日
16:07:06

10824

判断Activity是否在运行(可见):

[java] view
plain copy

public static boolean isActivityRunning(Context mContext,String activityClassName){  

    ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);  

    List<RunningTaskInfo> info = activityManager.getRunningTasks(1);  

    if(info != null && info.size() > 0){  

        ComponentName component = info.get(0).topActivity;  

        if(<span style="font-family:Arial, Helvetica, sans-serif;">activityClassName</span>.equals(component.getClassName())){  

            return true;  

            }  

        }  

    return false;  

}  

判断Service是否在运行?

[java] view
plain copy

public static boolean isServiceRunning(Context mContext,String className) {  

        boolean isRunning = false;  

        ActivityManager activityManager = (ActivityManager)  

        mContext.getSystemService(Context.ACTIVITY_SERVICE);   

        List<ActivityManager.RunningServiceInfo> serviceList = activityManager.getRunningServices(30);  

  

        if (!(serviceList.size()>0)) {  

            return false;  

        }  

  

        for (int i=0; i<serviceList.size(); i++) {  

            if (serviceList.get(i).service.getClassName().equals(className) == true) {  

                isRunning = true;  

                break;  

            }  

        }  

        return isRunning;  

}  

判断app是否打开运行状态?

第一种方法:

[java] view
plain copy

public static boolean isAppInForeground(Context context) {  

    ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);  

    List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();  

    for (RunningAppProcessInfo appProcess : appProcesses) {  

        if (appProcess.processName.equals(context.getPackageName())) {  

            return appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND;  

        }  

    }  

    return false;  

}  

[java] view
plain copy

第二种方法:  

[java] view
plain copy

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

public static boolean isAppInForeground2(Context context) {  

    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);  

    List<RunningTaskInfo> tasks = am.getRunningTasks(1);  

    if (!tasks.isEmpty()) {  

        ComponentName topActivity = tasks.get(0).topActivity;  

        if (!topActivity.getPackageName().equals(context.getPackageName())) {  

            return true;  

        }  

    }  

    return false;  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: