diff options
-rw-r--r-- | core/java/android/view/Choreographer.java | 4 | ||||
-rw-r--r-- | services/core/java/com/android/server/BluetoothManagerService.java | 26 | ||||
-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 |
4 files changed, 118 insertions, 92 deletions
diff --git a/core/java/android/view/Choreographer.java b/core/java/android/view/Choreographer.java index 39beeeae11de..c3511e7c036d 100644 --- a/core/java/android/view/Choreographer.java +++ b/core/java/android/view/Choreographer.java @@ -844,6 +844,10 @@ public final class Choreographer { mLastVsyncEventData = vsyncEventData; } + if (frameIntervalNanos > 0 && frameIntervalNanos != mFrameIntervalNanos) { + mFrameIntervalNanos = frameIntervalNanos; + ScrollOptimizer.setFrameInterval(mFrameIntervalNanos); + } ScrollOptimizer.setUITaskStatus(true); AnimationUtils.lockAnimationClock(frameTimeNanos / TimeUtils.NANOS_PER_MS); diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java index 806ea95424a7..1ed5840c4ab4 100644 --- a/services/core/java/com/android/server/BluetoothManagerService.java +++ b/services/core/java/com/android/server/BluetoothManagerService.java @@ -2031,9 +2031,10 @@ class BluetoothManagerService extends IBluetoothManager.Stub { case MESSAGE_ENABLE: int quietEnable = msg.arg1; int isBle = msg.arg2; + Slog.d(TAG, "MESSAGE_ENABLE: isBle: " + isBle + " msg.obj : " + msg.obj); if (mHandler.hasMessages(MESSAGE_HANDLE_DISABLE_DELAYED) || mHandler.hasMessages(MESSAGE_HANDLE_ENABLE_DELAYED)) { - if (msg.arg2 == 0) { + if (msg.obj == null) { int delay = ENABLE_DISABLE_DELAY_MS; if (mHandler.hasMessages(MESSAGE_DISABLE)) { @@ -2044,11 +2045,11 @@ class BluetoothManagerService extends IBluetoothManager.Stub { mHandler.removeMessages(MESSAGE_ENABLE); // We are handling enable or disable right now, wait for it. mHandler.sendMessageDelayed(mHandler.obtainMessage( - MESSAGE_ENABLE, quietEnable, 1), delay); + MESSAGE_ENABLE, quietEnable, isBle, 1), delay); Slog.d(TAG, "Queue new MESSAGE_ENABLE"); } else { mHandler.sendMessageDelayed(mHandler.obtainMessage( - MESSAGE_ENABLE, quietEnable, 1), ENABLE_DISABLE_DELAY_MS); + MESSAGE_ENABLE, quietEnable, isBle, 1), ENABLE_DISABLE_DELAY_MS); Slog.d(TAG, "Re-Queue previous MESSAGE_ENABLE"); if (mHandler.hasMessages(MESSAGE_DISABLE)) { // Ensure the original order of just entering the queue @@ -2060,10 +2061,10 @@ class BluetoothManagerService extends IBluetoothManager.Stub { } } break; - } else if(msg.arg2 == 0 && mHandler.hasMessages(MESSAGE_DISABLE)) { + } else if(msg.obj == null && mHandler.hasMessages(MESSAGE_DISABLE)) { mHandler.removeMessages(MESSAGE_ENABLE); mHandler.sendMessageDelayed(mHandler.obtainMessage( - MESSAGE_ENABLE, quietEnable, 1), ENABLE_DISABLE_DELAY_MS * 2); + MESSAGE_ENABLE, quietEnable, isBle, 1), ENABLE_DISABLE_DELAY_MS * 2); Slog.d(TAG, "MESSAGE_DISABLE exist. Queue new MESSAGE_ENABLE"); break; } @@ -2088,11 +2089,14 @@ class BluetoothManagerService extends IBluetoothManager.Stub { int state = mBluetooth.getState(); switch (state) { case BluetoothAdapter.STATE_BLE_ON: - if (isBle == 1) { - Slog.i(TAG, "Already at BLE_ON State"); - } else { - Slog.w(TAG, "BT Enable in BLE_ON State, going to ON"); + if (isBluetoothPersistedStateOnBluetooth() || + mEnableExternal) { + Slog.w(TAG, "BLE_ON State:Enable from Settings or" + + "BT on persisted, going to ON"); mBluetooth.onLeServiceUp(mContext.getAttributionSource()); + } else if (isBle == 1) { + Slog.w(TAG, "BLE_ON State:Queued enable from ble app," + + " stay in ble on"); } break; case BluetoothAdapter.STATE_BLE_TURNING_ON: @@ -2165,8 +2169,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub { // if MESSAGE_DISABLE present mHandler.removeMessages(MESSAGE_ENABLE); mHandler.sendMessageDelayed(mHandler.obtainMessage( - MESSAGE_ENABLE, mQuietEnableExternal ? 1: 0, 1), - ENABLE_DISABLE_DELAY_MS * 2); + MESSAGE_ENABLE, mQuietEnableExternal ? 1: 0, + mEnableExternal ? 0:1, 1), ENABLE_DISABLE_DELAY_MS * 2); Slog.d(TAG, "Re-Queue previous MESSAGE_ENABLE"); } } 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(); + } } } |