Running process start time

前端 未结 4 2130
失恋的感觉
失恋的感觉 2021-01-14 02:55

I am using below code to get all currently running process\'s on device. How can I get running process start time?

    activityMan = (ActivityManager)getSyst         


        
4条回答
  •  無奈伤痛
    2021-01-14 03:47

    supplement for the above answer..

    private static long getProcessStartTime(final int pid) throws Exception {
        final String path = "/proc/" + pid + "/stat";
        final BufferedReader reader = new BufferedReader(new FileReader(path));
        final String stat;
        try {
            stat = reader.readLine();
        } finally {
            reader.close();
        }
        final String field2End = ") ";
        final String fieldSep = " ";
        final int fieldStartTime = 20;
        final int msInSec = 1000;
        try {
            final String[] fields = stat.substring(stat.lastIndexOf(field2End)).split(fieldSep);
            final long t = Long.parseLong(fields[fieldStartTime]);
            int tckName;
            try {
                tckName = Class.forName("android.system.OsConstants").getField("_SC_CLK_TCK").getInt(null);
            } catch (ClassNotFoundException e) {
                tckName = Class.forName("libcore.io.OsConstants").getField("_SC_CLK_TCK").getInt(null);
            }
    
            final Object os = Class.forName("libcore.io.Libcore").getField("os").get(null);
            final long tck = (Long)os.getClass().getMethod("sysconf", Integer.TYPE).invoke(os, tckName);
            return t * msInSec / tck;
        } catch (Exception e) {
            throw new Exception(e);
        } 
    }
    

提交回复
热议问题