Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
getRunningAppProcesses在Android M上返回空列表(5.1.1)_Android_Process - Fatal编程技术网

getRunningAppProcesses在Android M上返回空列表(5.1.1)

getRunningAppProcesses在Android M上返回空列表(5.1.1),android,process,Android,Process,我刚刚测试了我的应用程序和CM、ATM Android Assistant等。它们都无法获得正在运行的进程列表,但在操作系统之前的版本上运行良好。那么安卓M(5.1.1)到底是怎么回事?请帮忙 am = (ActivityManager) getContext().getSystemService(Context.ACTIVITY_SERVICE); List<RunningAppProcessInfo> list = am.getRunningAppProcesses(); Log

我刚刚测试了我的应用程序和CM、ATM Android Assistant等。它们都无法获得正在运行的进程列表,但在操作系统之前的版本上运行良好。那么安卓M(5.1.1)到底是怎么回事?请帮忙

am = (ActivityManager) getContext().getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> list = am.getRunningAppProcesses();
Log.i(TAG, "LQ::examine list.size()=" + list.size());
am=(ActivityManager)getContext().getSystemService(Context.ACTIVITY_服务);

List List=am.getRunningAppProcesses(); Log.i(标记,“LQ::检查list.size()=”+list.size());
我决定改用getRunningServices


Du Speed Booster&Power Clean改用getRunningServices,也许getRunningAppProcesses在将来会被弃用

谢谢谷歌,谢谢字母表

    Hashtable<String, List<ActivityManager.RunningServiceInfo>> hashtable = new Hashtable<String, List<ActivityManager.RunningServiceInfo>>();
    ActivityManager am = (ActivityManager) getContext().getSystemService(Context.ACTIVITY_SERVICE);
    for (ActivityManager.RunningServiceInfo rsi : am.getRunningServices(Integer.MAX_VALUE)) {
        if (isCanceled()) {
            return;
        }

        String pkgName = rsi.service.getPackageName();
        if (hashtable.get(pkgName) == null) {
            List<ActivityManager.RunningServiceInfo> list = new ArrayList<ActivityManager.RunningServiceInfo>();
            list.add(rsi);
            hashtable.put(pkgName, list);
        } else {
            hashtable.get(pkgName).add(rsi);
        }
    }

    int i = 0;
    int size =  hashtable.size();
    for (Iterator it = hashtable.keySet().iterator(); it.hasNext(); i++) {
        String key = (String) it.next();
        List<ActivityManager.RunningServiceInfo> value = hashtable.get(key);
        ProcessItem item = new ProcessItem(getContext(), value.get(0).pid, key, totalCpu, totalRam);
        if (!whiteList.contains(item.pkgName)) {
            if (!killList.contains(item.pkgName)) {
                killList.add(item.pkgName);
                ramTotal += item.ram;

                if (getListener() != null) {
                    Progress progress = new Progress(this);
                    progress.setArg1(i);
                    progress.setArg2(size);
                    progress.setMsg(item.appName);
                    progress.setObj(item);
                    getListener().onExamining(progress);
                }
            }
        }
    }
    hashtable.clear();
    hashtable = null;
Hashtable Hashtable=新的Hashtable();
ActivityManager am=(ActivityManager)getContext().getSystemService(Context.ACTIVITY_服务);
for(ActivityManager.RunningServiceInfo rsi:am.getRunningServices(Integer.MAX_值)){
如果(isCanceled()){
返回;
}
字符串pkgName=rsi.service.getPackageName();
if(hashtable.get(pkgName)==null){
列表=新的ArrayList();
增加(rsi);
hashtable.put(pkgName,list);
}否则{
get(pkgName).add(rsi);
}
}
int i=0;
int size=hashtable.size();
for(Iterator it=hashtable.keySet().Iterator();it.hasNext();i++){
String key=(String)it.next();
列表值=hashtable.get(键);
ProcessItem=newProcessItem(getContext(),value.get(0).pid,key,totalCpu,totalRam);
如果(!whiteList.contains(item.pkgName)){
如果(!killList.contains(item.pkgName)){
killList.add(item.pkgName);
ramTotal+=item.ram;
如果(getListener()!=null){
进度=新的进度(本);
进度表1(i);
进度。设置arg2(大小);
progress.setMsg(item.appName);
进度。setObj(项目);
getListener().OneXaming(进度);
}
}
}
}
hashtable.clear();
hashtable=null;

另一个选项是使用
UsageStatsManager

UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService(Context.USAGE_STATS_SERVICE);
long endTime = System.currentTimeMillis();
long beginTime = endTime - 1000*60;

// We get usage stats for the last minute
List<UsageStats > stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, beginTime, endTime);

// Sort the stats by the last time used
if(stats != null) 
{
    SortedMap<Long,UsageStats> mySortedMap = new TreeMap<Long,UsageStats>();
    for (UsageStats usageStats : stats) 
    {
        mySortedMap.put(usageStats.getLastTimeUsed(),usageStats);
    }
    if(mySortedMap != null && !mySortedMap.isEmpty()) 
    {
        topActivity =  mySortedMap.get(mySortedMap.lastKey()).getPackageName();
    }
}

我可以在android 6.0上使用
getRunningServices(
)方法获取前台应用程序列表。谢谢@thecr0w

ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); List appProcessInfoList = mActivityManager.getRunningServices(Integer.MAX_VALUE);

“那么安卓5.1.1棒棒糖是怎么回事?”安卓5.1.1棒棒糖又是怎么回事?结果如何?我无法在5.1.1上获取正在运行的任务列表。但是在操作系统之前的版本上可以正常工作。那么
getrunningappprocesss
getRunningTasks
?你能决定什么不起作用吗?GetRunningAppProcesss注意:此方法仅用于调试,你是否将其用于其他目的?getRunningServices将如何返回所有正在运行的应用程序进程?如果我没弄错的话,它只会跑回来services@Lester,我们像ATK一样是一个流程杀手应用程序,所以我们需要运行流程或服务之类的东西。
ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); List appProcessInfoList = mActivityManager.getRunningServices(Integer.MAX_VALUE);