diff options
author | Ramesh Garimella <quic_rgarimel@quicinc.com> | 2022-06-16 10:44:38 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2022-06-16 10:44:38 +0000 |
commit | 24a989b4d6427c2256f166f9ee7fc7064be1f032 (patch) | |
tree | c43f8bfdf9a5cf70fcc35aefecb5db654d598a15 | |
parent | 55f98da8ded11cf88c5ed37d058d7025266cab6f (diff) | |
parent | fb769488f34e46f3da505390358f896e3cb2bc7f (diff) |
Merge "Servicetracker enablement before calling getService()" into s-keystone-qcom-dev
-rw-r--r-- | services/core/java/com/android/server/am/ActiveServices.java | 149 | ||||
-rw-r--r--[-rwxr-xr-x] | services/core/java/com/android/server/wm/ActivityRecord.java | 31 |
2 files changed, 99 insertions, 81 deletions
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 3e905960d4df..ee5bc5374df0 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -306,6 +306,9 @@ public final class ActiveServices { private IServicetracker mServicetracker; + private final boolean isLowRamDevice = + SystemProperties.getBoolean("ro.config.low_ram", false); + String mLastAnrDump; AppWidgetManagerInternal mAppWidgetManagerInternal; @@ -2848,28 +2851,30 @@ public final class ActiveServices { } clist.add(c); - ServiceData sData = new ServiceData(); - sData.packageName = s.packageName; - sData.processName = s.shortInstanceName; - sData.lastActivity = s.lastActivity; - if (s.app != null) { - sData.pid = s.app.getPid(); - sData.serviceB = s.app.mState.isServiceB(); - } else { - sData.pid = -1; - sData.serviceB = false; - } + if (!isLowRamDevice) { + ServiceData sData = new ServiceData(); + sData.packageName = s.packageName; + sData.processName = s.shortInstanceName; + sData.lastActivity = s.lastActivity; + if (s.app != null) { + sData.pid = s.app.getPid(); + sData.serviceB = s.app.mState.isServiceB(); + } else { + sData.pid = -1; + sData.serviceB = false; + } - ClientData cData = new ClientData(); - cData.processName = callerApp.processName; - cData.pid = callerApp.getPid(); - try { - if (getServicetrackerInstance()) { - mServicetracker.bindService(sData, cData); + ClientData cData = new ClientData(); + cData.processName = callerApp.processName; + cData.pid = callerApp.getPid(); + try { + if (getServicetrackerInstance()) { + mServicetracker.bindService(sData, cData); + } + } catch (RemoteException e) { + Slog.e(TAG, "Failed to send bind details to servicetracker HAL", e); + mServicetracker = null; } - } catch (RemoteException e) { - Slog.e(TAG, "Failed to send bind details to servicetracker HAL", e); - mServicetracker = null; } boolean needOomAdj = false; @@ -3054,28 +3059,30 @@ public final class ActiveServices { try { while (clist.size() > 0) { ConnectionRecord r = clist.get(0); - ServiceData sData = new ServiceData(); - sData.packageName = r.binding.service.packageName; - sData.processName = r.binding.service.shortInstanceName; - sData.lastActivity = r.binding.service.lastActivity; - if(r.binding.service.app != null) { - sData.pid = r.binding.service.app.getPid(); - sData.serviceB = r.binding.service.app.mState.isServiceB(); - } else { - sData.pid = -1; - sData.serviceB = false; - } + if (!isLowRamDevice) { + ServiceData sData = new ServiceData(); + sData.packageName = r.binding.service.packageName; + sData.processName = r.binding.service.shortInstanceName; + sData.lastActivity = r.binding.service.lastActivity; + if(r.binding.service.app != null) { + sData.pid = r.binding.service.app.getPid(); + sData.serviceB = r.binding.service.app.mState.isServiceB(); + } else { + sData.pid = -1; + sData.serviceB = false; + } - ClientData cData = new ClientData(); - cData.processName = r.binding.client.processName; - cData.pid = r.binding.client.getPid(); - try { - if (getServicetrackerInstance()) { - mServicetracker.unbindService(sData, cData); + ClientData cData = new ClientData(); + cData.processName = r.binding.client.processName; + cData.pid = r.binding.client.getPid(); + try { + if (getServicetrackerInstance()) { + mServicetracker.unbindService(sData, cData); + } + } catch (RemoteException e) { + Slog.e(TAG, "Failed to send unbind details to servicetracker HAL", e); + mServicetracker = null; } - } catch (RemoteException e) { - Slog.e(TAG, "Failed to send unbind details to servicetracker HAL", e); - mServicetracker = null; } removeConnectionLocked(r, null, null, true); if (clist.size() > 0 && clist.get(0) == r) { @@ -4086,20 +4093,22 @@ public final class ActiveServices { r.postNotification(); created = true; - ServiceData sData = new ServiceData(); - sData.packageName = r.packageName; - sData.processName = r.shortInstanceName; - sData.pid = r.app.getPid(); - sData.lastActivity = r.lastActivity; - sData.serviceB = r.app.mState.isServiceB(); + if (!isLowRamDevice) { + ServiceData sData = new ServiceData(); + sData.packageName = r.packageName; + sData.processName = r.shortInstanceName; + sData.pid = r.app.getPid(); + sData.lastActivity = r.lastActivity; + sData.serviceB = r.app.mState.isServiceB(); - try { - if (getServicetrackerInstance()) { - mServicetracker.startService(sData); + try { + if (getServicetrackerInstance()) { + mServicetracker.startService(sData); + } + } catch (RemoteException e) { + Slog.e(TAG, "Failed to send start details to servicetracker HAL", e); + mServicetracker = null; } - } catch (RemoteException e) { - Slog.e(TAG, "Failed to send start details to servicetracker HAL", e); - mServicetracker = null; } } catch (DeadObjectException e) { Slog.w(TAG, "Application dead when creating service " + r); @@ -4300,24 +4309,26 @@ public final class ActiveServices { private void bringDownServiceLocked(ServiceRecord r, boolean enqueueOomAdj) { //Slog.i(TAG, "Bring down service:"); //r.dump(" "); - ServiceData sData = new ServiceData(); - sData.packageName = r.packageName; - sData.processName = r.shortInstanceName; - sData.lastActivity = r.lastActivity; - if (r.app != null) { - sData.pid = r.app.getPid(); - } else { - sData.pid = -1; - sData.serviceB = false; - } + if (!isLowRamDevice) { + ServiceData sData = new ServiceData(); + sData.packageName = r.packageName; + sData.processName = r.shortInstanceName; + sData.lastActivity = r.lastActivity; + if (r.app != null) { + sData.pid = r.app.getPid(); + } else { + sData.pid = -1; + sData.serviceB = false; + } - try { - if (getServicetrackerInstance()) { - mServicetracker.destroyService(sData); + try { + if (getServicetrackerInstance()) { + mServicetracker.destroyService(sData); + } + } catch (RemoteException e) { + Slog.e(TAG, "Failed to send destroy details to servicetracker HAL", e); + mServicetracker = null; } - } catch (RemoteException e) { - Slog.e(TAG, "Failed to send destroy details to servicetracker HAL", e); - mServicetracker = null; } // Report to all of the connections that the service is no longer // available. @@ -5065,7 +5076,7 @@ public final class ActiveServices { } try { - if (getServicetrackerInstance()) { + if (!isLowRamDevice && getServicetrackerInstance()) { mServicetracker.killProcess(app.getPid()); } } catch (RemoteException e) { diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index e4ee577d1aea..dc986e222e19 100755..100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -284,6 +284,7 @@ import android.os.PersistableBundle; import android.os.Process; import android.os.RemoteException; import android.os.SystemClock; +import android.os.SystemProperties; import android.os.Trace; import android.os.UserHandle; import android.service.contentcapture.ActivityEvent; @@ -615,6 +616,9 @@ public final class ActivityRecord extends WindowToken implements WindowManagerSe public BoostFramework mPerf = null; public BoostFramework mPerf_iop = null; + private final boolean isLowRamDevice = + SystemProperties.getBoolean("ro.config.low_ram", false); + boolean mVoiceInteraction; private int mPendingRelaunchCount; @@ -5285,18 +5289,21 @@ public final class ActivityRecord extends WindowToken implements WindowManagerSe aState = ActivityStates.RESTARTING_PROCESS; break; } - if(DEBUG_SERVICETRACKER) { - Slog.v(TAG, "Calling mServicetracker.OnActivityStateChange with flag " + early_notify + " state " + state); - } - try { - mServicetracker = mAtmService.mTaskSupervisor.getServicetrackerInstance(); - if (mServicetracker != null) - mServicetracker.OnActivityStateChange(aState, aDetails, aStats, early_notify); - else - Slog.e(TAG, "Unable to get servicetracker HAL instance"); - } catch (RemoteException e) { - Slog.e(TAG, "Failed to send activity state change details to servicetracker HAL", e); - mAtmService.mTaskSupervisor.destroyServicetrackerInstance(); + if (!isLowRamDevice) { + if(DEBUG_SERVICETRACKER) { + Slog.v(TAG, "Calling mServicetracker.OnActivityStateChange with flag " + + early_notify + " state " + state); + } + try { + mServicetracker = mAtmService.mTaskSupervisor.getServicetrackerInstance(); + if (mServicetracker != null) + mServicetracker.OnActivityStateChange(aState, aDetails, aStats, early_notify); + else + Slog.e(TAG, "Unable to get servicetracker HAL instance"); + } catch (RemoteException e) { + Slog.e(TAG, "Failed to send activity state change details to servicetracker HAL", e); + mAtmService.mTaskSupervisor.destroyServicetrackerInstance(); + } } } |