Merge "Handle Activity Resume to Stop case for AppUsage logging" into rvc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
1c38963be0
@@ -183,6 +183,7 @@ public class UsageStatsService extends SystemService implements
|
|||||||
private static class ActivityData {
|
private static class ActivityData {
|
||||||
private final String mTaskRootPackage;
|
private final String mTaskRootPackage;
|
||||||
private final String mTaskRootClass;
|
private final String mTaskRootClass;
|
||||||
|
public int lastEvent = Event.NONE;
|
||||||
private ActivityData(String taskRootPackage, String taskRootClass) {
|
private ActivityData(String taskRootPackage, String taskRootClass) {
|
||||||
mTaskRootPackage = taskRootPackage;
|
mTaskRootPackage = taskRootPackage;
|
||||||
mTaskRootClass = taskRootClass;
|
mTaskRootClass = taskRootClass;
|
||||||
@@ -787,6 +788,7 @@ public class UsageStatsService extends SystemService implements
|
|||||||
switch (event.mEventType) {
|
switch (event.mEventType) {
|
||||||
case Event.ACTIVITY_RESUMED:
|
case Event.ACTIVITY_RESUMED:
|
||||||
case Event.ACTIVITY_PAUSED:
|
case Event.ACTIVITY_PAUSED:
|
||||||
|
case Event.ACTIVITY_STOPPED:
|
||||||
uid = mPackageManagerInternal.getPackageUid(event.mPackage, 0, userId);
|
uid = mPackageManagerInternal.getPackageUid(event.mPackage, 0, userId);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -819,8 +821,10 @@ public class UsageStatsService extends SystemService implements
|
|||||||
.APP_USAGE_EVENT_OCCURRED__EVENT_TYPE__MOVE_TO_FOREGROUND);
|
.APP_USAGE_EVENT_OCCURRED__EVENT_TYPE__MOVE_TO_FOREGROUND);
|
||||||
// check if this activity has already been resumed
|
// check if this activity has already been resumed
|
||||||
if (mVisibleActivities.get(event.mInstanceId) != null) break;
|
if (mVisibleActivities.get(event.mInstanceId) != null) break;
|
||||||
mVisibleActivities.put(event.mInstanceId,
|
final ActivityData resumedData = new ActivityData(event.mTaskRootPackage,
|
||||||
new ActivityData(event.mTaskRootPackage, event.mTaskRootClass));
|
event.mTaskRootClass);
|
||||||
|
resumedData.lastEvent = Event.ACTIVITY_RESUMED;
|
||||||
|
mVisibleActivities.put(event.mInstanceId, resumedData);
|
||||||
try {
|
try {
|
||||||
switch(mUsageSource) {
|
switch(mUsageSource) {
|
||||||
case USAGE_SOURCE_CURRENT_ACTIVITY:
|
case USAGE_SOURCE_CURRENT_ACTIVITY:
|
||||||
@@ -836,16 +840,17 @@ public class UsageStatsService extends SystemService implements
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Event.ACTIVITY_PAUSED:
|
case Event.ACTIVITY_PAUSED:
|
||||||
if (event.mTaskRootPackage == null) {
|
final ActivityData pausedData = mVisibleActivities.get(event.mInstanceId);
|
||||||
// Task Root info is missing. Repair the event based on previous data
|
if (pausedData == null) {
|
||||||
final ActivityData prevData = mVisibleActivities.get(event.mInstanceId);
|
Slog.w(TAG, "Unexpected activity event reported! (" + event.mPackage
|
||||||
if (prevData == null) {
|
+ "/" + event.mClass + " event : " + event.mEventType
|
||||||
Slog.w(TAG, "Unexpected activity event reported! (" + event.mPackage
|
+ " instanceId : " + event.mInstanceId + ")");
|
||||||
+ "/" + event.mClass + " event : " + event.mEventType
|
} else {
|
||||||
+ " instanceId : " + event.mInstanceId + ")");
|
pausedData.lastEvent = Event.ACTIVITY_PAUSED;
|
||||||
} else {
|
if (event.mTaskRootPackage == null) {
|
||||||
event.mTaskRootPackage = prevData.mTaskRootPackage;
|
// Task Root info is missing. Repair the event based on previous data
|
||||||
event.mTaskRootClass = prevData.mTaskRootClass;
|
event.mTaskRootPackage = pausedData.mTaskRootPackage;
|
||||||
|
event.mTaskRootClass = pausedData.mTaskRootClass;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FrameworkStatsLog.write(
|
FrameworkStatsLog.write(
|
||||||
@@ -868,6 +873,16 @@ public class UsageStatsService extends SystemService implements
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (prevData.lastEvent != Event.ACTIVITY_PAUSED) {
|
||||||
|
FrameworkStatsLog.write(
|
||||||
|
FrameworkStatsLog.APP_USAGE_EVENT_OCCURRED,
|
||||||
|
uid,
|
||||||
|
event.mPackage,
|
||||||
|
event.mClass,
|
||||||
|
FrameworkStatsLog
|
||||||
|
.APP_USAGE_EVENT_OCCURRED__EVENT_TYPE__MOVE_TO_BACKGROUND);
|
||||||
|
}
|
||||||
|
|
||||||
ArraySet<String> tokens;
|
ArraySet<String> tokens;
|
||||||
synchronized (mUsageReporters) {
|
synchronized (mUsageReporters) {
|
||||||
tokens = mUsageReporters.removeReturnOld(event.mInstanceId);
|
tokens = mUsageReporters.removeReturnOld(event.mInstanceId);
|
||||||
|
|||||||
Reference in New Issue
Block a user