Loading services/core/java/com/android/server/apphibernation/AppHibernationService.java +40 −0 Original line number Diff line number Diff line Loading @@ -57,10 +57,13 @@ import android.util.SparseArray; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.DumpUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.server.SystemService; import java.io.File; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Map; Loading Loading @@ -511,6 +514,37 @@ public final class AppHibernationService extends SystemService { return mIsServiceEnabled; } private void dump(PrintWriter pw) { // Check usage stats permission since hibernation indirectly informs usage. if (!DumpUtils.checkDumpAndUsageStatsPermission(getContext(), TAG, pw)) return; IndentingPrintWriter idpw = new IndentingPrintWriter(pw, " "); synchronized (mLock) { final int userCount = mUserStates.size(); for (int i = 0; i < userCount; i++) { final int userId = mUserStates.keyAt(i); idpw.print("User Level Hibernation States, "); idpw.printPair("user", userId); idpw.println(); Map<String, UserLevelState> stateMap = mUserStates.get(i); idpw.increaseIndent(); for (UserLevelState state : stateMap.values()) { idpw.print(state); idpw.println(); } idpw.decreaseIndent(); } idpw.println(); idpw.print("Global Level Hibernation States"); idpw.println(); for (GlobalLevelState state : mGlobalHibernationStates.values()) { idpw.print(state); idpw.println(); } } } private final AppHibernationServiceStub mServiceStub = new AppHibernationServiceStub(this); static final class AppHibernationServiceStub extends IAppHibernationService.Stub { Loading Loading @@ -547,6 +581,12 @@ public final class AppHibernationService extends SystemService { new AppHibernationShellCommand(mService).exec(this, in, out, err, args, callback, resultReceiver); } @Override protected void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter fout, @Nullable String[] args) { mService.dump(fout); } } // Broadcast receiver for package add/removal events Loading services/core/java/com/android/server/apphibernation/GlobalLevelState.java +8 −0 Original line number Diff line number Diff line Loading @@ -22,4 +22,12 @@ package com.android.server.apphibernation; final class GlobalLevelState { public String packageName; public boolean hibernated; @Override public String toString() { return "GlobalLevelState{" + "packageName='" + packageName + '\'' + ", hibernated=" + hibernated + '}'; } } services/core/java/com/android/server/apphibernation/UserLevelState.java +8 −0 Original line number Diff line number Diff line Loading @@ -22,4 +22,12 @@ package com.android.server.apphibernation; final class UserLevelState { public String packageName; public boolean hibernated; @Override public String toString() { return "UserLevelState{" + "packageName='" + packageName + '\'' + ", hibernated=" + hibernated + '}'; } } Loading
services/core/java/com/android/server/apphibernation/AppHibernationService.java +40 −0 Original line number Diff line number Diff line Loading @@ -57,10 +57,13 @@ import android.util.SparseArray; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.DumpUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.server.SystemService; import java.io.File; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Map; Loading Loading @@ -511,6 +514,37 @@ public final class AppHibernationService extends SystemService { return mIsServiceEnabled; } private void dump(PrintWriter pw) { // Check usage stats permission since hibernation indirectly informs usage. if (!DumpUtils.checkDumpAndUsageStatsPermission(getContext(), TAG, pw)) return; IndentingPrintWriter idpw = new IndentingPrintWriter(pw, " "); synchronized (mLock) { final int userCount = mUserStates.size(); for (int i = 0; i < userCount; i++) { final int userId = mUserStates.keyAt(i); idpw.print("User Level Hibernation States, "); idpw.printPair("user", userId); idpw.println(); Map<String, UserLevelState> stateMap = mUserStates.get(i); idpw.increaseIndent(); for (UserLevelState state : stateMap.values()) { idpw.print(state); idpw.println(); } idpw.decreaseIndent(); } idpw.println(); idpw.print("Global Level Hibernation States"); idpw.println(); for (GlobalLevelState state : mGlobalHibernationStates.values()) { idpw.print(state); idpw.println(); } } } private final AppHibernationServiceStub mServiceStub = new AppHibernationServiceStub(this); static final class AppHibernationServiceStub extends IAppHibernationService.Stub { Loading Loading @@ -547,6 +581,12 @@ public final class AppHibernationService extends SystemService { new AppHibernationShellCommand(mService).exec(this, in, out, err, args, callback, resultReceiver); } @Override protected void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter fout, @Nullable String[] args) { mService.dump(fout); } } // Broadcast receiver for package add/removal events Loading
services/core/java/com/android/server/apphibernation/GlobalLevelState.java +8 −0 Original line number Diff line number Diff line Loading @@ -22,4 +22,12 @@ package com.android.server.apphibernation; final class GlobalLevelState { public String packageName; public boolean hibernated; @Override public String toString() { return "GlobalLevelState{" + "packageName='" + packageName + '\'' + ", hibernated=" + hibernated + '}'; } }
services/core/java/com/android/server/apphibernation/UserLevelState.java +8 −0 Original line number Diff line number Diff line Loading @@ -22,4 +22,12 @@ package com.android.server.apphibernation; final class UserLevelState { public String packageName; public boolean hibernated; @Override public String toString() { return "UserLevelState{" + "packageName='" + packageName + '\'' + ", hibernated=" + hibernated + '}'; } }