如何获取当前 运行 的所有任务
How to get all the tasks that are running currently
我想获取 android.I 中 运行 的所有任务,在 ActivityManager 中找到 getRunningTasks 但从 android-5.0 开始,getRunningTasks 可能无法提供所有任务(在我的例子中它提供了主屏幕和我的应用程序)。
此外是否可以找到用户当前正在交互的任务?
如有任何帮助,我们将不胜感激。
谢谢。
编辑:我正在使用下面的 code.But 它只给我一个进程(那是我的应用程序)。即使我打开其他应用程序它也没有显示them.I 我是 运行 One Plus2 上的这个。
@Override
protected void onHandleIntent(Intent intent) {
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
getRunningApps();
}
}, 0, 1000);//put here time 1000 milliseconds=1 second
}
public void getRunningApps() {
final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final List<ActivityManager.RunningAppProcessInfo> recentTasks = activityManager.getRunningAppProcesses();
for (int i = 0; i < recentTasks.size(); i++)
{
Log.d("Executed app", "Application executed : " +recentTasks.get(i).pkgList[0]+ "\t\t ID: "+recentTasks.get(i).pid+"");
}
}
如果您不是该任务的所有者,Android 不会向您提供其信息。
我相信getRecentTasks and getRunningTask were deprecated as of API 21. I'm not sure what you're trying to achieve, perhaps u should try getRunningAppProcess。这给了你类似的结果。
使用 getRunningAppProcesses
,这将 return 一个包含 RunningAppProcessInfo
个对象的列表,这些对象将为您提供有关每个 运行 应用程序的一些数据。您可以检索的关于该应用程序的信息之一是它的 importance
,它可以有一个值 IMPORTANCE_FOREGROUND
,表明该进程是当前活动的应用程序!
相关文档:
如果这对您有帮助,请随时按向左的箭头 :)
使用这个 code
它对我有用。不要忘记在 Xml
文件中使用 ListView
。
ListView listView = (ListView) findViewById(R.id.listview);
ActivityManager actvityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses();
String[] values = new String[procInfos.size()];
final String packageName = "my.application.package";
PackageManager packageManager = getApplicationContext().getPackageManager();
for (int i = 0; i < procInfos.size(); i++) {
values[i] = procInfos.get(i).processName;
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values);
listView.setAdapter(adapter);
我想获取 android.I 中 运行 的所有任务,在 ActivityManager 中找到 getRunningTasks 但从 android-5.0 开始,getRunningTasks 可能无法提供所有任务(在我的例子中它提供了主屏幕和我的应用程序)。
此外是否可以找到用户当前正在交互的任务?
如有任何帮助,我们将不胜感激。
谢谢。
编辑:我正在使用下面的 code.But 它只给我一个进程(那是我的应用程序)。即使我打开其他应用程序它也没有显示them.I 我是 运行 One Plus2 上的这个。
@Override
protected void onHandleIntent(Intent intent) {
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
getRunningApps();
}
}, 0, 1000);//put here time 1000 milliseconds=1 second
}
public void getRunningApps() {
final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final List<ActivityManager.RunningAppProcessInfo> recentTasks = activityManager.getRunningAppProcesses();
for (int i = 0; i < recentTasks.size(); i++)
{
Log.d("Executed app", "Application executed : " +recentTasks.get(i).pkgList[0]+ "\t\t ID: "+recentTasks.get(i).pid+"");
}
}
如果您不是该任务的所有者,Android 不会向您提供其信息。
我相信getRecentTasks and getRunningTask were deprecated as of API 21. I'm not sure what you're trying to achieve, perhaps u should try getRunningAppProcess。这给了你类似的结果。
使用 getRunningAppProcesses
,这将 return 一个包含 RunningAppProcessInfo
个对象的列表,这些对象将为您提供有关每个 运行 应用程序的一些数据。您可以检索的关于该应用程序的信息之一是它的 importance
,它可以有一个值 IMPORTANCE_FOREGROUND
,表明该进程是当前活动的应用程序!
相关文档:
如果这对您有帮助,请随时按向左的箭头 :)
使用这个 code
它对我有用。不要忘记在 Xml
文件中使用 ListView
。
ListView listView = (ListView) findViewById(R.id.listview);
ActivityManager actvityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses();
String[] values = new String[procInfos.size()];
final String packageName = "my.application.package";
PackageManager packageManager = getApplicationContext().getPackageManager();
for (int i = 0; i < procInfos.size(); i++) {
values[i] = procInfos.get(i).processName;
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values);
listView.setAdapter(adapter);