summaryrefslogtreecommitdiff
path: root/services/usage
diff options
context:
space:
mode:
authorMichael Wachenschwanz <mwachens@google.com>2020-06-17 16:00:03 -0700
committerMichael Wachenschwanz <mwachens@google.com>2020-06-17 16:05:53 -0700
commit709758d4482a3010a278cfa294daec668c69b733 (patch)
treedb65f53fdc86ed25c1de37c9e75143e58dcfbf7e /services/usage
parent3764cbaac41e6b33346a07b6ca801726b169f357 (diff)
Small Fix to App Usage logging
Relocated MOVE_TO_FOREGROUND so that it will get logged for Activity Paused to Activity Resumed transitions. Also moved some calls into PackageManager outside of the UsageStats lock Bug: 159165822 Test: builds and flashes Change-Id: I8e9e96ae1fc3b77535514df2422ce3b7935d850f
Diffstat (limited to 'services/usage')
-rw-r--r--services/usage/java/com/android/server/usage/UsageStatsService.java37
1 files changed, 24 insertions, 13 deletions
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java
index 060ed51951e4..a98da959aff9 100644
--- a/services/usage/java/com/android/server/usage/UsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UsageStatsService.java
@@ -780,6 +780,22 @@ public class UsageStatsService extends SystemService implements
* Called by the Binder stub.
*/
void reportEvent(Event event, int userId) {
+ final int uid;
+ // Acquire uid outside of mLock for events that need it
+ switch (event.mEventType) {
+ case Event.ACTIVITY_RESUMED:
+ case Event.ACTIVITY_PAUSED:
+ uid = mPackageManagerInternal.getPackageUid(event.mPackage, 0, userId);
+ break;
+ default:
+ uid = 0;
+ }
+
+ if (event.mPackage != null
+ && mPackageManagerInternal.isPackageEphemeral(userId, event.mPackage)) {
+ event.mFlags |= Event.FLAG_IS_PACKAGE_INSTANT_APP;
+ }
+
synchronized (mLock) {
// This should never be called directly when the user is locked
if (!mUserUnlockedStates.get(userId)) {
@@ -792,13 +808,15 @@ public class UsageStatsService extends SystemService implements
final long elapsedRealtime = SystemClock.elapsedRealtime();
- if (event.mPackage != null
- && mPackageManagerInternal.isPackageEphemeral(userId, event.mPackage)) {
- event.mFlags |= Event.FLAG_IS_PACKAGE_INSTANT_APP;
- }
-
switch (event.mEventType) {
case Event.ACTIVITY_RESUMED:
+ FrameworkStatsLog.write(
+ FrameworkStatsLog.APP_USAGE_EVENT_OCCURRED,
+ uid,
+ event.mPackage,
+ event.mClass,
+ FrameworkStatsLog
+ .APP_USAGE_EVENT_OCCURRED__EVENT_TYPE__MOVE_TO_FOREGROUND);
// check if this activity has already been resumed
if (mVisibleActivities.get(event.mInstanceId) != null) break;
mVisibleActivities.put(event.mInstanceId,
@@ -816,13 +834,6 @@ public class UsageStatsService extends SystemService implements
} catch (IllegalArgumentException iae) {
Slog.e(TAG, "Failed to note usage start", iae);
}
- FrameworkStatsLog.write(
- FrameworkStatsLog.APP_USAGE_EVENT_OCCURRED,
- mPackageManagerInternal.getPackageUid(event.mPackage, 0, userId),
- event.mPackage,
- event.mClass,
- FrameworkStatsLog
- .APP_USAGE_EVENT_OCCURRED__EVENT_TYPE__MOVE_TO_FOREGROUND);
break;
case Event.ACTIVITY_PAUSED:
if (event.mTaskRootPackage == null) {
@@ -839,7 +850,7 @@ public class UsageStatsService extends SystemService implements
}
FrameworkStatsLog.write(
FrameworkStatsLog.APP_USAGE_EVENT_OCCURRED,
- mPackageManagerInternal.getPackageUid(event.mPackage, 0, userId),
+ uid,
event.mPackage,
event.mClass,
FrameworkStatsLog