Как узнать время запуска / запуска приложения для Android? - PullRequest
3 голосов
/ 09 сентября 2010

Есть ли способ узнать время запуска приложения? ActivityManager предоставляет pids и т. Д. Для каждого процесса приложения, но не сообщает, как долго выполняется процесс.

Ответы [ 2 ]

0 голосов
/ 24 октября 2014

Будет возвращено время запуска процесса (с момента загрузки системы):

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

Чтобы узнать время выполнения процесса:

final long dt = SystemClock.elapsedRealtime() - getStartTime(Process.myPid());
0 голосов
/ 09 сентября 2010

Я не знаю, есть ли API для этого. Но одним из подходов было бы использовать что-то вроде:

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

Чтобы узнать время запуска вашего приложения и просто вычтите его с текущим временем.

Возможно, это не лучший способ, но вот что пришло на ум. (И я не пробовал это ..)

Gl!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...