diff options
2 files changed, 11 insertions, 10 deletions
diff --git a/services/companion/java/com/android/server/companion/CompanionApplicationController.java b/services/companion/java/com/android/server/companion/CompanionApplicationController.java index 2a83a3c431ec..6eb8e2619cb5 100644 --- a/services/companion/java/com/android/server/companion/CompanionApplicationController.java +++ b/services/companion/java/com/android/server/companion/CompanionApplicationController.java @@ -104,10 +104,10 @@ class CompanionApplicationController { } void bindCompanionApplication(@UserIdInt int userId, @NonNull String packageName, - boolean bindImportant) { + boolean isSelfManaged) { if (DEBUG) { Log.i(TAG, "bind() u" + userId + "/" + packageName - + " important=" + bindImportant); + + " isSelfManaged=" + isSelfManaged); } final List<ComponentName> companionServices = @@ -130,7 +130,7 @@ class CompanionApplicationController { serviceConnectors = CollectionUtils.map(companionServices, componentName -> CompanionDeviceServiceConnector.newInstance(mContext, userId, - componentName, bindImportant)); + componentName, isSelfManaged)); mBoundCompanionApplications.setValueForPackage(userId, packageName, serviceConnectors); } diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceServiceConnector.java b/services/companion/java/com/android/server/companion/CompanionDeviceServiceConnector.java index a6bd48056e12..9bb1fb9ac9f5 100644 --- a/services/companion/java/com/android/server/companion/CompanionDeviceServiceConnector.java +++ b/services/companion/java/com/android/server/companion/CompanionDeviceServiceConnector.java @@ -17,7 +17,7 @@ package com.android.server.companion; import static android.content.Context.BIND_ALMOST_PERCEPTIBLE; -import static android.content.Context.BIND_IMPORTANT; +import static android.content.Context.BIND_TREAT_LIKE_VISIBLE_FOREGROUND_SERVICE; import static android.os.Process.THREAD_PRIORITY_DEFAULT; import android.annotation.NonNull; @@ -61,21 +61,22 @@ class CompanionDeviceServiceConnector extends ServiceConnector.Impl<ICompanionDe /** * Create a CompanionDeviceServiceConnector instance. * - * When bindImportant is false, the binding flag will be BIND_ALMOST_PERCEPTIBLE + * For self-managed apps, the binding flag will be BIND_TREAT_LIKE_VISIBLE_FOREGROUND_SERVICE + * (oom_score_adj = VISIBLE_APP_ADJ = 100). + * + * For non self-managed apps, the binding flag will be BIND_ALMOST_PERCEPTIBLE * (oom_score_adj = PERCEPTIBLE_MEDIUM_APP = 225). The target service will be treated * as important as a perceptible app (IMPORTANCE_VISIBLE = 200), and will be unbound when * the app is removed from task manager. - * When bindImportant is true, the binding flag will be BIND_IMPORTANT - * (oom_score_adj = PERCEPTIBLE_MEDIUM_APP = -700). The target service will - * have the highest priority to avoid being killed (IMPORTANCE_FOREGROUND = 100). * * One time permission's importance level to keep session alive is * IMPORTANCE_FOREGROUND_SERVICE = 125. In order to kill the one time permission session, the * service importance level should be higher than 125. */ static CompanionDeviceServiceConnector newInstance(@NonNull Context context, - @UserIdInt int userId, @NonNull ComponentName componentName, boolean bindImportant) { - final int bindingFlags = bindImportant ? BIND_IMPORTANT : BIND_ALMOST_PERCEPTIBLE; + @UserIdInt int userId, @NonNull ComponentName componentName, boolean isSelfManaged) { + final int bindingFlags = isSelfManaged ? BIND_TREAT_LIKE_VISIBLE_FOREGROUND_SERVICE + : BIND_ALMOST_PERCEPTIBLE; return new CompanionDeviceServiceConnector(context, userId, componentName, bindingFlags); } |