Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ba212c6b authored by Tim Murray's avatar Tim Murray
Browse files

Bind background services to the top app correctly.

bug 27187310

Change-Id: I7d1ff989d7d36319b12dc20e3b25a47303729600
parent af326ed2
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -18629,9 +18629,16 @@ public final class ActivityManagerService extends ActivityManagerNative
                            }
                        }
                        if ((cr.flags&Context.BIND_NOT_FOREGROUND) == 0) {
                            if (client.curSchedGroup == Process.THREAD_GROUP_DEFAULT) {
                            // This will treat important bound services identically to
                            // the top app, which may behave differently than generic
                            // foreground work.
                            if (client.curSchedGroup > schedGroup) {
                                if ((cr.flags&Context.BIND_IMPORTANT) != 0) {
                                    schedGroup = client.curSchedGroup;
                                } else {
                                    schedGroup = Process.THREAD_GROUP_DEFAULT;
                                }
                            }
                            if (clientProcState <= ActivityManager.PROCESS_STATE_TOP) {
                                if (clientProcState == ActivityManager.PROCESS_STATE_TOP) {
                                    // Special handling of clients who are in the top state.
@@ -18694,12 +18701,16 @@ public final class ActivityManagerService extends ActivityManagerNative
                    final ActivityRecord a = cr.activity;
                    if ((cr.flags&Context.BIND_ADJUST_WITH_ACTIVITY) != 0) {
                        if (a != null && adj > ProcessList.FOREGROUND_APP_ADJ &&
                                (a.visible || a.state == ActivityState.RESUMED
                                 || a.state == ActivityState.PAUSING)) {
                            (a.visible || a.state == ActivityState.RESUMED ||
                             a.state == ActivityState.PAUSING)) {
                            adj = ProcessList.FOREGROUND_APP_ADJ;
                            if ((cr.flags&Context.BIND_NOT_FOREGROUND) == 0) {
                                if ((cr.flags&Context.BIND_IMPORTANT) != 0) {
                                    schedGroup = Process.THREAD_GROUP_TOP_APP;
                                } else {
                                    schedGroup = Process.THREAD_GROUP_DEFAULT;
                                }
                            }
                            app.cached = false;
                            app.adjType = "service";
                            app.adjTypeCode = ActivityManager.RunningAppProcessInfo
@@ -18778,7 +18789,7 @@ public final class ActivityManagerService extends ActivityManagerNative
                if (procState > clientProcState) {
                    procState = clientProcState;
                }
                if (client.curSchedGroup == Process.THREAD_GROUP_DEFAULT) {
                if (client.curSchedGroup > schedGroup) {
                    schedGroup = Process.THREAD_GROUP_DEFAULT;
                }
            }