How to get all the tasks that are running currently

喜夏-厌秋 提交于 2019-12-01 16:35:46

问题


I want to get all the tasks that are running in android.I found getRunningTasks in ActivityManager but from android-5.0 the getRunningTasks may not give all the tasks (in my case it's give the home screen and my application).

In addition is it possible to find the task that the user is currently interacting with?

Any help would be greatly appreciated.

Thanks.

Edit: I am using the following piece of code.But it's giving me only one process (that's my app).Even if i open other apps it's not showing them.I am running this on 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+"");
        }
    }

回答1:


Use getRunningAppProcesses, which will return a list of RunningAppProcessInfo objects that will give you some data about each running app. One of the pieces of information you can retrieve about the app is its importance, which can have a value IMPORTANCE_FOREGROUND which indicates that the process is the currently active application!

Related Documentation:

getRunningAppProcesses

RunningAppProcessInfo

IMPORTANCE_FOREGROUND

If this helped you, feel free to press that arrow to the left :)




回答2:


If you are not the owner of that task, Android won't give you its info.




回答3:


I believe getRecentTasks and getRunningTask were deprecated as of API 21. I'm not sure what you're trying to achieve, perhaps u should try getRunningAppProcess. which give u a similar result.




回答4:


Use this code Its works for me. Dont forgot to use ListView in your Xml File.

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);  


来源:https://stackoverflow.com/questions/35812791/how-to-get-all-the-tasks-that-are-running-currently

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!