DO NOT MERGE Isolated processes don't get precached system service binders
am: 190e66685f
Change-Id: I0ed530e9909811e592f966a44f41400a0146c5b6
This commit is contained in:
@@ -942,6 +942,7 @@ public final class ActivityManagerService extends ActivityManagerNative
|
|||||||
* For example, references to the commonly used services.
|
* For example, references to the commonly used services.
|
||||||
*/
|
*/
|
||||||
HashMap<String, IBinder> mAppBindArgs;
|
HashMap<String, IBinder> mAppBindArgs;
|
||||||
|
HashMap<String, IBinder> mIsolatedAppBindArgs;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Temporary to avoid allocations. Protected by main lock.
|
* Temporary to avoid allocations. Protected by main lock.
|
||||||
@@ -2347,19 +2348,25 @@ public final class ActivityManagerService extends ActivityManagerNative
|
|||||||
* lazily setup to make sure the services are running when they're asked for.
|
* lazily setup to make sure the services are running when they're asked for.
|
||||||
*/
|
*/
|
||||||
private HashMap<String, IBinder> getCommonServicesLocked(boolean isolated) {
|
private HashMap<String, IBinder> getCommonServicesLocked(boolean isolated) {
|
||||||
|
// Isolated processes won't get this optimization, so that we don't
|
||||||
|
// violate the rules about which services they have access to.
|
||||||
|
if (isolated) {
|
||||||
|
if (mIsolatedAppBindArgs == null) {
|
||||||
|
mIsolatedAppBindArgs = new HashMap<>();
|
||||||
|
mIsolatedAppBindArgs.put("package", ServiceManager.getService("package"));
|
||||||
|
}
|
||||||
|
return mIsolatedAppBindArgs;
|
||||||
|
}
|
||||||
|
|
||||||
if (mAppBindArgs == null) {
|
if (mAppBindArgs == null) {
|
||||||
mAppBindArgs = new HashMap<>();
|
mAppBindArgs = new HashMap<>();
|
||||||
|
|
||||||
// Isolated processes won't get this optimization, so that we don't
|
|
||||||
// violate the rules about which services they have access to.
|
|
||||||
if (!isolated) {
|
|
||||||
// Setup the application init args
|
// Setup the application init args
|
||||||
mAppBindArgs.put("package", ServiceManager.getService("package"));
|
mAppBindArgs.put("package", ServiceManager.getService("package"));
|
||||||
mAppBindArgs.put("window", ServiceManager.getService("window"));
|
mAppBindArgs.put("window", ServiceManager.getService("window"));
|
||||||
mAppBindArgs.put(Context.ALARM_SERVICE,
|
mAppBindArgs.put(Context.ALARM_SERVICE,
|
||||||
ServiceManager.getService(Context.ALARM_SERVICE));
|
ServiceManager.getService(Context.ALARM_SERVICE));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return mAppBindArgs;
|
return mAppBindArgs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user