How to find out the start / start time of an Android application?

In any case, to find out the start time of the application? ActivityManagerprovides pids, etc. for each application process, but does not indicate how long the process has been running.

+3
source share
2 answers

I do not know if there is an API for this. But one way would be to use something like:

String pid = "yourpid";    
BufferedReader reader = new BufferedReader ( new InputStreamReader ( new FileInputStream ( "ls -ld /proc/"+pid)) , 1000 );

To get the start time of your application and simply subtract it with the current time.

Not the best way, but what came to mind. (And I have not tried ...)

Gl!

0
source

This will return the process start time (from the moment the system boots):

private static long getStartTime(final int pid) throws IOException {
    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]);
        final int 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 (final NumberFormatException e) {
        throw new IOException(e);
    } catch (final IndexOutOfBoundsException e) {
        throw new IOException(e);
    } catch (ReflectiveOperationException e) {
        throw new IOException(e);
    }
}

To get process runtime:

final long dt = SystemClock.elapsedRealtime() - getStartTime(Process.myPid());
0
source

Source: https://habr.com/ru/post/1763996/


All Articles