/** * get information for process * * @return true == success, false == failed */ public boolean getCacheInfo() { if (queryQueue.isEmpty()) return false; try { queryQueueLock.acquire(); } catch (InterruptedException e) { return false; } QueueJob processJob = queryQueue.remove(); queryQueueLock.release(); PackageInfo curPackageInfo = null; String curPackageName = null; if (processJob.process.contains(":")) curPackageName = processJob.process.substring(0, processJob.process.indexOf(":")); else curPackageName = processJob.process; // for system user if (processJob.owner.contains("system") && processJob.process.contains("system") && !processJob.process.contains(".")) curPackageName = "android"; try { curPackageInfo = packageMgr.getPackageInfo(curPackageName, 0); } catch (NameNotFoundException e) { } if (curPackageInfo == null && processJob.uid > 0) { String[] subPackageName = packageMgr.getPackagesForUid(processJob.uid); if (subPackageName != null) { for (int PackagePtr = 0; PackagePtr < subPackageName.length; PackagePtr++) { if (subPackageName[PackagePtr] == null) continue; try { curPackageInfo = packageMgr.getPackageInfo(subPackageName[PackagePtr], 0); PackagePtr = subPackageName.length; } catch (NameNotFoundException e) { } } } } CacheItem processItem = new CacheItem(); if (curPackageInfo != null) { processItem.name = curPackageInfo.applicationInfo.loadLabel(packageMgr).toString(); if (useDetail == true) processItem.icon = resizeImage(curPackageInfo.applicationInfo.loadIcon(packageMgr), iconSize); } else { processItem.name = curPackageName; processItem.icon = commonIcon; } cacheStorage.put(processJob.process, processItem); return true; }
public void doCacheInfo(int uid, String owner, String process) { // add a job into work queue try { queryQueueLock.acquire(); } catch (InterruptedException e) { return; } queryQueue.add(new QueueJob(uid, owner, process)); queryQueueLock.release(); // create a skeleton object CacheItem skeletonItem = new CacheItem(); skeletonItem.name = process; skeletonItem.icon = commonIcon; cacheStorage.put(process, skeletonItem); return; }