Activity中Context
Activity中Context在activity.attach()设置,所以Application中Context为ContextImpl appContext = createBaseContextForActivity(r);,即在ContextImpl.createActivityContext()设置DispalyId
private ContextImpl createBaseContextForActivity(ActivityClientRecord r) {final int displayId = ActivityClient.getInstance().getDisplayId(r.token);ContextImpl appContext = ContextImpl.createActivityContext(this, r.packageInfo, r.activityInfo, r.token, displayId, r.overrideConfig);// The rotation adjustments must be applied before creating the activity, so the activity// can get the adjusted display info during creation.if (r.mPendingFixedRotationAdjustments != null) {// The adjustments should have been set by handleLaunchActivity, so the last one is the// override for activity resources.if (mActiveRotationAdjustments != null && !mActiveRotationAdjustments.isEmpty()) {mResourcesManager.overrideTokenDisplayAdjustments(r.token,mActiveRotationAdjustments.get(mActiveRotationAdjustments.size() - 1).second);}r.mPendingFixedRotationAdjustments = null;}final DisplayManagerGlobal dm = DisplayManagerGlobal.getInstance();// For debugging purposes, if the activity's package name contains the value of// the "debug.use-second-display" system property as a substring, then show// its content on a secondary display if there is one.String pkgName = SystemProperties.get("debug.second-display.pkg");if (pkgName != null && !pkgName.isEmpty()&& r.packageInfo.mPackageName.contains(pkgName)) {for (int id : dm.getDisplayIds()) {if (id != Display.DEFAULT_DISPLAY) {Display display =dm.getCompatibleDisplay(id, appContext.getResources());appContext = (ContextImpl) appContext.createDisplayContext(display);break;}}}return appContext;
}