summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/app/ActivityManagerInternal.java6
-rw-r--r--core/java/android/app/usage/EventList.java17
-rw-r--r--core/java/android/app/usage/UsageEvents.java10
-rw-r--r--core/java/android/app/usage/UsageStats.java9
-rw-r--r--core/java/android/app/usage/UsageStatsManagerInternal.java6
5 files changed, 25 insertions, 23 deletions
diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java
index 1f01e2698fb5..5cac0489e8df 100644
--- a/core/java/android/app/ActivityManagerInternal.java
+++ b/core/java/android/app/ActivityManagerInternal.java
@@ -320,4 +320,10 @@ public abstract class ActivityManagerInternal {
/** Remove pending backup for the given userId. */
public abstract void clearPendingBackup(int userId);
+
+ /**
+ * When power button is very long pressed, call this interface to do some pre-shutdown work
+ * like persisting database etc.
+ */
+ public abstract void prepareForPossibleShutdown();
}
diff --git a/core/java/android/app/usage/EventList.java b/core/java/android/app/usage/EventList.java
index a79ad2fc8607..aaae57e526a0 100644
--- a/core/java/android/app/usage/EventList.java
+++ b/core/java/android/app/usage/EventList.java
@@ -103,21 +103,4 @@ public class EventList {
}
return result;
}
-
- /**
- * Remove events of certain type on or after a timestamp.
- * @param type The type of event to remove.
- * @param timeStamp the timeStamp on or after which to remove the event.
- */
- public void removeOnOrAfter(int type, long timeStamp) {
- for (int i = mEvents.size() - 1; i >= 0; i--) {
- UsageEvents.Event event = mEvents.get(i);
- if (event.mTimeStamp < timeStamp) {
- break;
- }
- if (event.mEventType == type) {
- mEvents.remove(i);
- }
- }
- }
}
diff --git a/core/java/android/app/usage/UsageEvents.java b/core/java/android/app/usage/UsageEvents.java
index d7a53281bc56..2c5fe046faad 100644
--- a/core/java/android/app/usage/UsageEvents.java
+++ b/core/java/android/app/usage/UsageEvents.java
@@ -245,10 +245,18 @@ public final class UsageEvents implements Parcelable {
public static final int FLUSH_TO_DISK = 25;
/**
+ * An event type denoting that the device underwent a shutdown process.
+ * A DEVICE_SHUTDOWN event should be treated as if all started activities and foreground
+ * services are now stopped and no explicit {@link #ACTIVITY_STOPPED} and
+ * {@link #FOREGROUND_SERVICE_STOP} events will be generated for them.
+ */
+ public static final int DEVICE_SHUTDOWN = 26;
+
+ /**
* Keep in sync with the greatest event type value.
* @hide
*/
- public static final int MAX_EVENT_TYPE = 25;
+ public static final int MAX_EVENT_TYPE = 26;
/** @hide */
public static final int FLAG_IS_PACKAGE_INSTANT_APP = 1 << 0;
diff --git a/core/java/android/app/usage/UsageStats.java b/core/java/android/app/usage/UsageStats.java
index 308180badbb8..94a2a3eaae7f 100644
--- a/core/java/android/app/usage/UsageStats.java
+++ b/core/java/android/app/usage/UsageStats.java
@@ -21,6 +21,7 @@ import static android.app.usage.UsageEvents.Event.ACTIVITY_PAUSED;
import static android.app.usage.UsageEvents.Event.ACTIVITY_RESUMED;
import static android.app.usage.UsageEvents.Event.ACTIVITY_STOPPED;
import static android.app.usage.UsageEvents.Event.CONTINUING_FOREGROUND_SERVICE;
+import static android.app.usage.UsageEvents.Event.DEVICE_SHUTDOWN;
import static android.app.usage.UsageEvents.Event.END_OF_DAY;
import static android.app.usage.UsageEvents.Event.FLUSH_TO_DISK;
import static android.app.usage.UsageEvents.Event.FOREGROUND_SERVICE_START;
@@ -119,12 +120,9 @@ public final class UsageStats implements Parcelable {
public int mLastEvent;
/**
- * If an activity is visible(onStart(), onPause() states) or in foreground (onResume() state),
- * it has one entry in this map. When an activity becomes invisible (onStop() or onDestroy()),
- * it is removed from this map.
* Key is instanceId of the activity (ActivityRecode appToken hashCode)..
- * Value is this activity's last event, one of ACTIVITY_RESUMED or
- * ACTIVITY_PAUSED.
+ * Value is this activity's last event, one of ACTIVITY_RESUMED, ACTIVITY_PAUSED or
+ * ACTIVITY_STOPPED.
* {@hide}
*/
public SparseIntArray mActivities = new SparseIntArray();
@@ -560,6 +558,7 @@ public final class UsageStats implements Parcelable {
mLastTimeForegroundServiceUsed = timeStamp;
mForegroundServices.put(className, eventType);
break;
+ case DEVICE_SHUTDOWN:
case FLUSH_TO_DISK:
// update usage of all active activities/services.
if (hasForegroundActivity()) {
diff --git a/core/java/android/app/usage/UsageStatsManagerInternal.java b/core/java/android/app/usage/UsageStatsManagerInternal.java
index 2edad350e18e..cc3ab0025864 100644
--- a/core/java/android/app/usage/UsageStatsManagerInternal.java
+++ b/core/java/android/app/usage/UsageStatsManagerInternal.java
@@ -98,6 +98,12 @@ public abstract class UsageStatsManagerInternal {
public abstract void prepareShutdown();
/**
+ * When the device power button is long pressed for 3.5 seconds, prepareForPossibleShutdown()
+ * is called.
+ */
+ public abstract void prepareForPossibleShutdown();
+
+ /**
* Returns true if the app has not been used for a certain amount of time. How much time?
* Could be hours, could be days, who knows?
*