Merge "Log GlobalHibernatedApps atom" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-05-06 07:59:58 +00:00
committed by Android (Google) Code Review

View File

@@ -182,12 +182,18 @@ public final class AppHibernationService extends SystemService {
NAMESPACE_APP_HIBERNATION, NAMESPACE_APP_HIBERNATION,
ActivityThread.currentApplication().getMainExecutor(), ActivityThread.currentApplication().getMainExecutor(),
this::onDeviceConfigChanged); this::onDeviceConfigChanged);
getContext().getSystemService(StatsManager.class) final StatsManager statsManager = getContext().getSystemService(StatsManager.class);
.setPullAtomCallback( final StatsPullAtomCallbackImpl pullAtomCallback = new StatsPullAtomCallbackImpl();
FrameworkStatsLog.USER_LEVEL_HIBERNATED_APPS, statsManager.setPullAtomCallback(
/* metadata */ null, // use default PullAtomMetadata values FrameworkStatsLog.USER_LEVEL_HIBERNATED_APPS,
mBackgroundExecutor, /* metadata */ null, // use default PullAtomMetadata values
new StatsPullAtomCallbackImpl()); mBackgroundExecutor,
pullAtomCallback);
statsManager.setPullAtomCallback(
FrameworkStatsLog.GLOBAL_HIBERNATED_APPS,
/* metadata */ null, // use default PullAtomMetadata values
mBackgroundExecutor,
pullAtomCallback);
} }
} }
@@ -291,6 +297,7 @@ public final class AppHibernationService extends SystemService {
stateSnapshot.packageName, stateSnapshot.packageName,
userIdSnapshot, userIdSnapshot,
stateSnapshot.hibernated, stateSnapshot.hibernated,
// TODO(b/187224817): This isn't the expected value right now.
stateSnapshot.lastUnhibernatedMs); stateSnapshot.lastUnhibernatedMs);
}); });
List<UserLevelState> states = new ArrayList<>(mUserStates.get(userId).values()); List<UserLevelState> states = new ArrayList<>(mUserStates.get(userId).values());
@@ -938,23 +945,39 @@ public final class AppHibernationService extends SystemService {
private final class StatsPullAtomCallbackImpl implements StatsPullAtomCallback { private final class StatsPullAtomCallbackImpl implements StatsPullAtomCallback {
@Override @Override
public int onPullAtom(int atomTag, @NonNull List<StatsEvent> data) { public int onPullAtom(int atomTag, @NonNull List<StatsEvent> data) {
if (atomTag != FrameworkStatsLog.USER_LEVEL_HIBERNATED_APPS) { if (!isAppHibernationEnabled()
return StatsManager.PULL_SKIP; && (atomTag == FrameworkStatsLog.USER_LEVEL_HIBERNATED_APPS
|| atomTag == FrameworkStatsLog.GLOBAL_HIBERNATED_APPS)) {
return StatsManager.PULL_SUCCESS;
} }
if (isAppHibernationEnabled()) {
List<UserInfo> userInfos = mUserManager.getAliveUsers(); switch (atomTag) {
final int numUsers = userInfos.size(); case FrameworkStatsLog.USER_LEVEL_HIBERNATED_APPS:
for (int i = 0; i < numUsers; ++i) { List<UserInfo> userInfos = mUserManager.getAliveUsers();
final int userId = userInfos.get(i).id; final int numUsers = userInfos.size();
if (mUserManager.isUserUnlockingOrUnlocked(userId)) { for (int i = 0; i < numUsers; ++i) {
data.add( final int userId = userInfos.get(i).id;
FrameworkStatsLog.buildStatsEvent( if (mUserManager.isUserUnlockingOrUnlocked(userId)) {
atomTag, data.add(
getHibernatingPackagesForUser(userId).size(), FrameworkStatsLog.buildStatsEvent(
userId) atomTag,
); getHibernatingPackagesForUser(userId).size(),
userId)
);
}
} }
} break;
case FrameworkStatsLog.GLOBAL_HIBERNATED_APPS:
int hibernatedAppCount = 0;
synchronized (mLock) {
for (GlobalLevelState state : mGlobalHibernationStates.values()) {
if (state.hibernated) hibernatedAppCount++;
}
}
data.add(FrameworkStatsLog.buildStatsEvent(atomTag, hibernatedAppCount));
break;
default:
return StatsManager.PULL_SKIP;
} }
return StatsManager.PULL_SUCCESS; return StatsManager.PULL_SUCCESS;
} }