summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/view/Choreographer.java4
-rw-r--r--services/core/java/com/android/server/BluetoothManagerService.java26
-rw-r--r--services/core/java/com/android/server/am/ActiveServices.java149
-rw-r--r--[-rwxr-xr-x]services/core/java/com/android/server/wm/ActivityRecord.java31
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();
+ }
}
}