Merge "Add local service interface for app hibernation"

This commit is contained in:
Kevin Han
2021-03-10 22:37:27 +00:00
committed by Gerrit Code Review
2 changed files with 79 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.server.apphibernation;
/**
* App hibernation manager local system service interface.
*
* @hide Only for use within the system server.
*/
public abstract class AppHibernationManagerInternal {
/**
* @see AppHibernationService#isHibernatingForUser
*/
public abstract boolean isHibernatingForUser(String packageName, int userId);
/**
* @see AppHibernationService#setHibernatingForUser
*/
public abstract void setHibernatingForUser(String packageName, int userId,
boolean isHibernating);
/**
* @see AppHibernationService#isHibernatingGlobally
*/
public abstract boolean isHibernatingGlobally(String packageName);
/**
* @see AppHibernationService#setHibernatingGlobally
*/
public abstract void setHibernatingGlobally(String packageName, boolean isHibernating);
}

View File

@@ -59,6 +59,7 @@ 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.LocalServices;
import com.android.server.SystemService;
import java.io.File;
@@ -134,6 +135,8 @@ public final class AppHibernationService extends SystemService {
intentFilter.addAction(ACTION_PACKAGE_REMOVED);
intentFilter.addDataScheme("package");
userAllContext.registerReceiver(mBroadcastReceiver, intentFilter);
LocalServices.addService(AppHibernationManagerInternal.class, mLocalService);
}
@Override
@@ -545,6 +548,36 @@ public final class AppHibernationService extends SystemService {
}
}
private final AppHibernationManagerInternal mLocalService = new LocalService(this);
private static final class LocalService extends AppHibernationManagerInternal {
private final AppHibernationService mService;
LocalService(AppHibernationService service) {
mService = service;
}
@Override
public boolean isHibernatingForUser(String packageName, int userId) {
return mService.isHibernatingForUser(packageName, userId);
}
@Override
public void setHibernatingForUser(String packageName, int userId, boolean isHibernating) {
mService.setHibernatingForUser(packageName, userId, isHibernating);
}
@Override
public void setHibernatingGlobally(String packageName, boolean isHibernating) {
mService.setHibernatingGlobally(packageName, isHibernating);
}
@Override
public boolean isHibernatingGlobally(String packageName) {
return mService.isHibernatingGlobally(packageName);
}
}
private final AppHibernationServiceStub mServiceStub = new AppHibernationServiceStub(this);
static final class AppHibernationServiceStub extends IAppHibernationService.Stub {