DO NOT MERGE Isolated processes don't get precached system service binders
am: 2aa7e5e861
Change-Id: Ied81e1f4b517627f0ced686e7485fa035b1f4c6a
This commit is contained in:
@@ -788,6 +788,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.
|
||||||
@@ -2210,7 +2211,17 @@ public final class ActivityManagerService extends ActivityManagerNative
|
|||||||
* process when the bindApplication() IPC is sent to the process. They're
|
* process when the bindApplication() IPC is sent to the process. They're
|
||||||
* 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() {
|
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<String, IBinder>();
|
||||||
|
mIsolatedAppBindArgs.put("package", ServiceManager.getService("package"));
|
||||||
|
}
|
||||||
|
return mIsolatedAppBindArgs;
|
||||||
|
}
|
||||||
|
|
||||||
if (mAppBindArgs == null) {
|
if (mAppBindArgs == null) {
|
||||||
mAppBindArgs = new HashMap<String, IBinder>();
|
mAppBindArgs = new HashMap<String, IBinder>();
|
||||||
|
|
||||||
@@ -4990,7 +5001,8 @@ public final class ActivityManagerService extends ActivityManagerNative
|
|||||||
app.instrumentationArguments, app.instrumentationWatcher,
|
app.instrumentationArguments, app.instrumentationWatcher,
|
||||||
app.instrumentationUiAutomationConnection, testMode, enableOpenGlTrace,
|
app.instrumentationUiAutomationConnection, testMode, enableOpenGlTrace,
|
||||||
isRestrictedBackupMode || !normalMode, app.persistent,
|
isRestrictedBackupMode || !normalMode, app.persistent,
|
||||||
new Configuration(mConfiguration), app.compat, getCommonServicesLocked(),
|
new Configuration(mConfiguration), app.compat,
|
||||||
|
getCommonServicesLocked(app.isolated),
|
||||||
mCoreSettingsObserver.getCoreSettingsLocked());
|
mCoreSettingsObserver.getCoreSettingsLocked());
|
||||||
updateLruProcessLocked(app, false, null);
|
updateLruProcessLocked(app, false, null);
|
||||||
app.lastRequestedGc = app.lastLowMemory = SystemClock.uptimeMillis();
|
app.lastRequestedGc = app.lastLowMemory = SystemClock.uptimeMillis();
|
||||||
|
|||||||
Reference in New Issue
Block a user