获取有关所有正在运行的进程

Zai*_*bal 6 java android taskmanager

我有一个想法为android 制作任务管理器.任何人都告诉我如何获得当前在android中运行的所有进程?

Ami*_*and 8

使用下面的代码,您可以获得正在运行的进程列表: -

ActivityManager actvityManager = (ActivityManager)
this.getSystemService( ACTIVITY_SERVICE );
List<RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses();

for(RunningAppProcessInfo runningProInfo:procInfos){

        Log.d("Running Processes", "()()"+runningProInfo.processName);
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请访问此链接.

要根据包名使用PackageManager类获取应用程序名称.

final PackageManager pkgmgr = getApplicationContext().getPackageManager();
ApplicationInfo appinfo;
try {
    appinfo = pkgmgr.getApplicationInfo( this.getPackageName(), 0);
} catch (final NameNotFoundException e) {
    appinfo = null;
}
final String applicationName = (String) (appinfo != null ? pkgmgr.getApplicationLabel(appinfo) : "(unknown)");
Run Code Online (Sandbox Code Playgroud)

要根据PID使用获取应用程序名称: -

public static String getAppNameByPID(Context context, int pid){
    ActivityManager manager 
               = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

    for(RunningAppProcessInfo processInfo : manager.getRunningAppProcesses()){
        if(processInfo.pid == pid){
            return processInfo.processName;
        }
    }
    return "";
}
Run Code Online (Sandbox Code Playgroud)

最后检查一个应用程序是否是系统应用程序使用: -

private boolean isSystemPackage(PackageInfo pkgInfo) {
        return (pkgInfo.applicationInfo.flags & 
                ApplicationInfo.FLAG_SYSTEM) != 0;
    }
Run Code Online (Sandbox Code Playgroud)

  • `getRunningAppProcesses()`返回设备上运行的应用程序进程列表,而`getRecentTasks(int maxNum,int flags)`返回用户最近启动的任务列表,最新的是第一个和更早的任务按顺序 这里`maxNum`是列表中要返回的最大条目数.返回的实际数字可能更小,具体取决于用户已启动的任务数量以及系统可记住的最大数量. (3认同)
  • 请注意,从 API 29 开始,常规应用程序无法访问其他进程的列表。 (3认同)