summaryrefslogtreecommitdiff
path: root/core/java/android/app/ActivityThread.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2009-11-09 12:30:12 -0800
committerDianne Hackborn <hackbod@google.com>2009-11-09 12:30:12 -0800
commit0be1f78c97ba6f38b315ab3ab28b44cdc883abec (patch)
treeab234f2afa69f3ddf9f290b988ab87f8b22cd048 /core/java/android/app/ActivityThread.java
parent090c60bb9d6608df4a8d753fc91974fe2c49c262 (diff)
Fix issue #2246723: Only one Application object gets onCreate called
Change-Id: I83ba96fe81ad04258099d6f94a667dc7d9dd4fd3
Diffstat (limited to 'core/java/android/app/ActivityThread.java')
-rw-r--r--core/java/android/app/ActivityThread.java27
1 files changed, 21 insertions, 6 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index daf4090369e2..b116bf8fd306 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -485,7 +485,8 @@ public final class ActivityThread {
return mResources;
}
- public Application makeApplication(boolean forceDefaultAppClass) {
+ public Application makeApplication(boolean forceDefaultAppClass,
+ Instrumentation instrumentation) {
if (mApplication != null) {
return mApplication;
}
@@ -512,7 +513,21 @@ public final class ActivityThread {
}
}
mActivityThread.mAllApplications.add(app);
- return mApplication = app;
+ mApplication = app;
+
+ if (instrumentation != null) {
+ try {
+ instrumentation.callApplicationOnCreate(app);
+ } catch (Exception e) {
+ if (!instrumentation.onException(app, e)) {
+ throw new RuntimeException(
+ "Unable to create application " + app.getClass().getName()
+ + ": " + e.toString(), e);
+ }
+ }
+ }
+
+ return app;
}
public void removeContextRegistrations(Context context,
@@ -2378,7 +2393,7 @@ public final class ActivityThread {
}
try {
- Application app = r.packageInfo.makeApplication(false);
+ Application app = r.packageInfo.makeApplication(false, mInstrumentation);
if (localLOGV) Log.v(TAG, "Performing launch of " + r);
if (localLOGV) Log.v(
@@ -2576,7 +2591,7 @@ public final class ActivityThread {
}
try {
- Application app = packageInfo.makeApplication(false);
+ Application app = packageInfo.makeApplication(false, mInstrumentation);
if (localLOGV) Log.v(
TAG, "Performing receive of " + data.intent
@@ -2730,7 +2745,7 @@ public final class ActivityThread {
ApplicationContext context = new ApplicationContext();
context.init(packageInfo, null, this);
- Application app = packageInfo.makeApplication(false);
+ Application app = packageInfo.makeApplication(false, mInstrumentation);
context.setOuterContext(service);
service.attach(context, this, data.info.name, data.token, app,
ActivityManagerNative.getDefault());
@@ -3940,7 +3955,7 @@ public final class ActivityThread {
// If the app is being launched for full backup or restore, bring it up in
// a restricted environment with the base application class.
- Application app = data.info.makeApplication(data.restrictedBackupMode);
+ Application app = data.info.makeApplication(data.restrictedBackupMode, null);
mInitialApplication = app;
List<ProviderInfo> providers = data.providers;