Merge "Add getter for UidFrozenState" into udc-dev
This commit is contained in:
@@ -18,6 +18,7 @@ package android.app {
|
||||
|
||||
public class ActivityManager {
|
||||
method @RequiresPermission(android.Manifest.permission.SET_ACTIVITY_WATCHER) public void addHomeVisibilityListener(@NonNull java.util.concurrent.Executor, @NonNull android.app.HomeVisibilityListener);
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int[] getUidFrozenState(@NonNull int[]);
|
||||
method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void registerUidFrozenStateChangedCallback(@NonNull java.util.concurrent.Executor, @NonNull android.app.ActivityManager.UidFrozenStateChangedCallback);
|
||||
method @RequiresPermission(android.Manifest.permission.SET_ACTIVITY_WATCHER) public void removeHomeVisibilityListener(@NonNull android.app.HomeVisibilityListener);
|
||||
method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void unregisterUidFrozenStateChangedCallback(@NonNull android.app.ActivityManager.UidFrozenStateChangedCallback);
|
||||
|
||||
@@ -131,6 +131,7 @@ package android.app {
|
||||
method public void alwaysShowUnsupportedCompileSdkWarning(android.content.ComponentName);
|
||||
method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}) public int[] getDisplayIdsForStartingVisibleBackgroundUsers();
|
||||
method public long getTotalRam();
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int[] getUidFrozenState(@NonNull int[]);
|
||||
method @RequiresPermission(allOf={android.Manifest.permission.PACKAGE_USAGE_STATS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}, conditional=true) public int getUidProcessCapabilities(int);
|
||||
method @RequiresPermission(allOf={android.Manifest.permission.PACKAGE_USAGE_STATS, android.Manifest.permission.INTERACT_ACROSS_USERS_FULL}, conditional=true) public int getUidProcessState(int);
|
||||
method public void holdLock(android.os.IBinder, int);
|
||||
|
||||
@@ -362,6 +362,30 @@ public class ActivityManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Query the frozen state of a list of UIDs.
|
||||
*
|
||||
* @param uids the array of UIDs which the client would like to know the frozen state of.
|
||||
* @return An array containing the frozen state for each requested UID, by index. Will be set
|
||||
* to {@link UidFrozenStateChangedCallback#UID_FROZEN_STATE_FROZEN}
|
||||
* if the UID is frozen. If the UID is not frozen or not found,
|
||||
* {@link UidFrozenStateChangedCallback#UID_FROZEN_STATE_UNFROZEN}
|
||||
* will be set.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@RequiresPermission(Manifest.permission.PACKAGE_USAGE_STATS)
|
||||
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
|
||||
@TestApi
|
||||
public @NonNull @UidFrozenStateChangedCallback.UidFrozenState
|
||||
int[] getUidFrozenState(@NonNull int[] uids) {
|
||||
try {
|
||||
return getService().getUidFrozenState(uids);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <a href="{@docRoot}guide/topics/manifest/meta-data-element.html">{@code
|
||||
* <meta-data>}</a> name for a 'home' Activity that declares a package that is to be
|
||||
|
||||
@@ -882,4 +882,6 @@ interface IActivityManager {
|
||||
void registerUidFrozenStateChangedCallback(in IUidFrozenStateChangedCallback callback);
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS)")
|
||||
void unregisterUidFrozenStateChangedCallback(in IUidFrozenStateChangedCallback callback);
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS)")
|
||||
int[] getUidFrozenState(in int[] uids);
|
||||
}
|
||||
|
||||
@@ -38,6 +38,8 @@ import static android.app.ActivityManager.PROCESS_STATE_IMPORTANT_FOREGROUND;
|
||||
import static android.app.ActivityManager.PROCESS_STATE_NONEXISTENT;
|
||||
import static android.app.ActivityManager.PROCESS_STATE_TOP;
|
||||
import static android.app.ActivityManager.StopUserOnSwitch;
|
||||
import static android.app.ActivityManager.UidFrozenStateChangedCallback.UID_FROZEN_STATE_FROZEN;
|
||||
import static android.app.ActivityManager.UidFrozenStateChangedCallback.UID_FROZEN_STATE_UNFROZEN;
|
||||
import static android.app.ActivityManagerInternal.ALLOW_FULL_ONLY;
|
||||
import static android.app.ActivityManagerInternal.ALLOW_NON_FULL;
|
||||
import static android.app.ActivityManagerInternal.MEDIA_PROJECTION_TOKEN_EVENT_CREATED;
|
||||
@@ -7500,9 +7502,9 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
@Override
|
||||
public void registerUidFrozenStateChangedCallback(
|
||||
@NonNull IUidFrozenStateChangedCallback callback) {
|
||||
Preconditions.checkNotNull(callback, "callback cannot be null");
|
||||
enforceCallingPermission(android.Manifest.permission.PACKAGE_USAGE_STATS,
|
||||
"registerUidFrozenStateChangedCallback()");
|
||||
Preconditions.checkNotNull(callback, "callback cannot be null");
|
||||
synchronized (mUidFrozenStateChangedCallbackList) {
|
||||
final boolean registered = mUidFrozenStateChangedCallbackList.register(callback);
|
||||
if (!registered) {
|
||||
@@ -7520,14 +7522,47 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
@Override
|
||||
public void unregisterUidFrozenStateChangedCallback(
|
||||
@NonNull IUidFrozenStateChangedCallback callback) {
|
||||
Preconditions.checkNotNull(callback, "callback cannot be null");
|
||||
enforceCallingPermission(android.Manifest.permission.PACKAGE_USAGE_STATS,
|
||||
"unregisterUidFrozenStateChangedCallback()");
|
||||
Preconditions.checkNotNull(callback, "callback cannot be null");
|
||||
synchronized (mUidFrozenStateChangedCallbackList) {
|
||||
mUidFrozenStateChangedCallbackList.unregister(callback);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Query the frozen state of a list of UIDs.
|
||||
*
|
||||
* @param uids the array of UIDs which the client would like to know the frozen state of.
|
||||
* @return An array containing the frozen state for each requested UID, by index. Will be set
|
||||
* to {@link UidFrozenStateChangedCallback#UID_FROZEN_STATE_FROZEN}
|
||||
* if the UID is frozen. If the UID is not frozen or not found,
|
||||
* {@link UidFrozenStateChangedCallback#UID_FROZEN_STATE_UNFROZEN}
|
||||
* will be set.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@RequiresPermission(Manifest.permission.PACKAGE_USAGE_STATS)
|
||||
@Override
|
||||
public @NonNull int[] getUidFrozenState(@NonNull int[] uids) {
|
||||
Preconditions.checkNotNull(uids, "uid array cannot be null");
|
||||
enforceCallingPermission(android.Manifest.permission.PACKAGE_USAGE_STATS,
|
||||
"getUidFrozenState()");
|
||||
|
||||
final int[] frozenStates = new int[uids.length];
|
||||
synchronized (mProcLock) {
|
||||
for (int i = 0; i < uids.length; i++) {
|
||||
final UidRecord uidRec = mProcessList.mActiveUids.get(uids[i]);
|
||||
if (uidRec != null && uidRec.areAllProcessesFrozen()) {
|
||||
frozenStates[i] = UID_FROZEN_STATE_FROZEN;
|
||||
} else {
|
||||
frozenStates[i] = UID_FROZEN_STATE_UNFROZEN;
|
||||
}
|
||||
}
|
||||
}
|
||||
return frozenStates;
|
||||
}
|
||||
|
||||
/**
|
||||
* Notify the system that a UID has been frozen or unfrozen.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user