`

获取Android正在运行的任务和服务

阅读更多

获取Android正在运行的任务和服务

 

一、检测某ActivityUpdate是否在当前Task的栈顶

 

public static boolean isTopActivy(String cmdName, Context context)
    {
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> runningTaskInfos = manager.getRunningTasks(Integer.MAX_VALUE);
        String cmpNameTemp = null;
        if (null != runningTaskInfos)
        {
            cmpNameTemp = (runningTaskInfos.get(0).topActivity).toString();
        }

        if (null == cmpNameTemp)
        {
            return false;
        }
        
        return cmpNameTemp.equals(cmdName);

    }

二、判断Android应用是否在前台

 

public static boolean isAppOnForeground(Context context)
    {
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        String packageName = context.getPackageName();
List<RecentTaskInfo> appTask = activityManager.getRecentTasks(Integer.MAX_VALUE, 1);
        
        if (appTask == null)
        {
            return false;
        }
        
        if (appTask.get(0).baseIntent.toString().contains(packageName))
        {
            return true;
        }
        return false;
    }

三、获取Android手机内安装的所有桌面

 

private static List<String> getAllTheLauncher(Context context)
    {
        List<String> names = null;
        PackageManager pkgMgt = context.getPackageManager();
        Intent it = new Intent(Intent.ACTION_MAIN);
        it.addCategory(Intent.CATEGORY_HOME);
        List<ResolveInfo> ra = pkgMgt.queryIntentActivities(it, 0);
        if (ra.size() != 0)
        {
            names = new ArrayList<String>();
        }
        for (int i = 0; i < ra.size(); i++)
        {
            String packageName = ra.get(i).activityInfo.packageName;
            names.add(packageName);
        }
        return names;
    }

四、Android 判断程序前后台状态

 

public static boolean isLauncherRunnig(Context context)
    {
        boolean result = false;
        List<String> names = getAllTheLauncher(context);
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;
    }
分享到:
评论

相关推荐

    Android中获取后台正在运行的应用列表

    在Android设备中,按Back键会将当前的Activity出栈销毁,而按HOME键却会将之隐藏到后台。如若有多个这样的程序这样操作,我们不知道后台到底有多少个正在运行的应用程序。此程序的目的就列举出后台正在运行的应用...

    Android 获取正在运行的任务和服务的小例子

    Android 获取正在运行的任务和服务的小例子,需要的朋友可以参考一下

    Android 小例子:获取系统信息 文件浏览器.rar

    Android 小例子:获取系统信息 文件浏览器,可以实现以下功能:文件系统,文件浏览器,操作系统版本,读取/proc/version信息,系统信息,手机设备的系统信息,运营商信息,手机网络的运营商信息、正在运行的后台服务...

    获得android系统当前运行的应用

    PackagesInfo pi = new PackagesInfo(this); ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); //获取正在运行的应用 获得当前系统所有应用

    Android开发实现根据包名判断App运行状态的方法

    对于没有 Service 的 App,程序一旦切换到后台,可能很快就被回收了,这里使用 ActivityManager.getRunningTasks(int maxNum) 方法来获取当前正在运行的任务,注意:此方法并不被系统推荐,且是一个

    Android打印主线程所有方法执行时间

    我们知道Android卡顿主要是主线程中有耗时操作导致的,那么我们怎么能方便快捷的获取主线程中的所有耗时方法执行时间呢?今天我们来介绍两个方案 方案一:利用Looper.java中loop()方法的logging.print的特殊关键字...

    基于gitlab获取数据的Android App.zip

    多任务处理:Android允许用户同时运行多个应用程序,并且可以轻松地在不同应用程序之间切换,提高了效率和便利性。 丰富的应用生态系统:Android系统拥有庞大的应用程序生态系统,用户可以从Google Play商店或其他第...

    《Google Android SDK开发范例大全(第3版)》.pdf

     全书共分11章,主要以范例集的方式来讲述android的知识点,详细介绍了开发android的人机交互界面、android常用的开发控件、android手机收发短信等通信服务、开发android手机的自动服务功能和娱乐多媒体功能以及...

    基于Android API获取手机传感器数据并通过蓝牙发送至PC端.zip

    多任务处理:Android允许用户同时运行多个应用程序,并且可以轻松地在不同应用程序之间切换,提高了效率和便利性。 丰富的应用生态系统:Android系统拥有庞大的应用程序生态系统,用户可以从Google Play商店或其他第...

    Android底层开发技术实战详解--内核、移植和驱动.(电子工业.王振丽).part3

    2.2 获取Android源代码 33 2.3 分析并编译Android源代码 35 2.3.1 Android源代码的结构 35 2.3.2 编译Android源代码 40 2.3.3 运行Android源代码 42 2.3.4 实践演练——演示编译Android...

    Google Android SDK开发范例大全(第3版) 1/5

    全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及整合...

    android开发秘籍

    1.3 运行android 的设备 2 1.3.1 htc 系列机型 4 1.3.2 摩托罗拉系列机型 4 1.3.3 三星系列机型 4 1.3.4 平板电脑 5 1.3.5 其他设备 5 1.4 android 设备的硬件差异 5 1.4.1 屏幕 5 1.4.2 用户输入方式 6 ...

    AndroidTaskManager:Android任务管理器源码-android

    #TaskManager Android任务管理器源码##本示例所涉及的知识点有:列表的用法自定义适配器列表的优化列表项中组件事件处理移除列表项时的动画效果的添加多语言获取正在运行的进程关闭正在运行的进程动画效果的用法...

    Google Android SDK开发范例大全(第3版) 4/5

    全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及整合...

    Google Android SDK开发范例大全(第3版) 3/5

    全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及整合...

    android手机安全卫士

    是对android知识点的综合应用,用到的技术有 (activity,service,broadcast,content provider,Notification , 数据库,自定义title,自定义控件,自定义toast,widget,aidl进程间通讯, javascript和java的互相调用等) ...

    Android底层开发技术实战详解--内核、移植和驱动.(电子工业.王振丽).part1

    2.2 获取Android源代码 33 2.3 分析并编译Android源代码 35 2.3.1 Android源代码的结构 35 2.3.2 编译Android源代码 40 2.3.3 运行Android源代码 42 2.3.4 实践演练——演示编译Android...

Global site tag (gtag.js) - Google Analytics