I am creating a home launcher and I want to be compatible with Android 5.0, Lollipop. I want to get a list of recent applications in the launchpad.
But since it ActivityManager.getRecentTasks()no longer works in API 21, how can I do this?
ActivityManager.getRecentTasks()
String topPackageName ; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { UsageStatsManager mUsageStatsManager = (UsageStatsManager)getSystemService("usagestats"); long time = System.currentTimeMillis(); // We get usage stats for the last 10 seconds List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000*10, time); // 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()) { topPackageName = mySortedMap.get(mySortedMap.lastKey()).getPackageName(); } } }
Using UsageStatsManager, you can get the names of running foreground packages.
UsageStatsManager
Source: How to get recent assignments on Android "L"?
, , api, getRecentTasks, getRunningTasks API21, , . api lollipop, null : (.
getRecentTasks
getRunningTasks
api, packagename , , . Android Linux, AndroidProcesses. /proc Android pid processName, processName ad com.xxx.xxx:remote. , : :)
packagename
/proc
pid
processName
com.xxx.xxx:remote
:
packagename, , , . , Service . , .
Service