diff options
author | Michael Wachenschwanz <mwachens@google.com> | 2020-06-17 16:00:03 -0700 |
---|---|---|
committer | Michael Wachenschwanz <mwachens@google.com> | 2020-06-17 16:05:53 -0700 |
commit | 709758d4482a3010a278cfa294daec668c69b733 (patch) | |
tree | db65f53fdc86ed25c1de37c9e75143e58dcfbf7e /services/usage | |
parent | 3764cbaac41e6b33346a07b6ca801726b169f357 (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.java | 37 |
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 |