From d98885c128e7045da244098d82751da6e792d677 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Tue, 1 Mar 2016 17:13:03 -0800 Subject: [PATCH] Add APIs to find out the time when a process was created. Change-Id: Id0d12c377f278fec6e31a98eab0c865a23c006ec --- api/current.txt | 2 ++ api/system-current.txt | 2 ++ api/test-current.txt | 2 ++ core/java/android/app/ActivityThread.java | 3 +++ core/java/android/os/Process.java | 23 +++++++++++++++++++++++ 5 files changed, 32 insertions(+) diff --git a/api/current.txt b/api/current.txt index aeaae55833042..ce7ba46851e51 100644 --- a/api/current.txt +++ b/api/current.txt @@ -29104,6 +29104,8 @@ package android.os { ctor public Process(); method public static final long getElapsedCpuTime(); method public static final int getGidForName(java.lang.String); + method public static final long getStartElapsedRealtime(); + method public static final long getStartUptimeMillis(); method public static final int getThreadPriority(int) throws java.lang.IllegalArgumentException; method public static final int getUidForName(java.lang.String); method public static final boolean is64Bit(); diff --git a/api/system-current.txt b/api/system-current.txt index 1a2c8547fa8cb..e4f7caa475067 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -31396,6 +31396,8 @@ package android.os { ctor public Process(); method public static final long getElapsedCpuTime(); method public static final int getGidForName(java.lang.String); + method public static final long getStartElapsedRealtime(); + method public static final long getStartUptimeMillis(); method public static final int getThreadPriority(int) throws java.lang.IllegalArgumentException; method public static final int getUidForName(java.lang.String); method public static final boolean is64Bit(); diff --git a/api/test-current.txt b/api/test-current.txt index 1039fed4ac4f6..c220c6d995a80 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -29115,6 +29115,8 @@ package android.os { ctor public Process(); method public static final long getElapsedCpuTime(); method public static final int getGidForName(java.lang.String); + method public static final long getStartElapsedRealtime(); + method public static final long getStartUptimeMillis(); method public static final int getThreadPriority(int) throws java.lang.IllegalArgumentException; method public static final int getUidForName(java.lang.String); method public static final boolean is64Bit(); diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 1e95c983a84fd..2415ce1d946f4 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -4909,6 +4909,9 @@ public final class ActivityThread { DdmVmInternal.enableRecentAllocations(true); } + // Note when this process has started. + Process.setStartTimes(SystemClock.elapsedRealtime(), SystemClock.uptimeMillis()); + mBoundApplication = data; mConfiguration = new Configuration(data.config); mCompatConfiguration = new Configuration(data.config); diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java index 9984755d316fb..8fd3b0c0035f8 100644 --- a/core/java/android/os/Process.java +++ b/core/java/android/os/Process.java @@ -383,6 +383,9 @@ public class Process { public static final int SIGNAL_KILL = 9; public static final int SIGNAL_USR1 = 10; + private static long sStartElapsedRealtime; + private static long sStartUptimeMillis; + /** * State for communicating with the zygote process. * @@ -771,6 +774,26 @@ public class Process { */ public static final native long getElapsedCpuTime(); + /** + * Return the {@link SystemClock#elapsedRealtime()} at which this process was started. + */ + public static final long getStartElapsedRealtime() { + return sStartElapsedRealtime; + } + + /** + * Return the {@link SystemClock#uptimeMillis()} at which this process was started. + */ + public static final long getStartUptimeMillis() { + return sStartUptimeMillis; + } + + /** @hide */ + public static final void setStartTimes(long elapsedRealtime, long uptimeMillis) { + sStartElapsedRealtime = elapsedRealtime; + sStartUptimeMillis = uptimeMillis; + } + /** * Returns true if the current process is a 64-bit runtime. */