我们都知道,contexwrapper是contextimpl的代理类,那么它是在哪里把contextimpl和contextwrapper绑定在一起的呢,如下为调用过程:

LoadedApk.java:

ContextImpl appContext = ContextImpl.createAppContext(mActivityThread, this);app = mActivityThread.mInstrumentation.newApplication(cl, appClass, appContext);

Instrumentation.java:

public Application newApplication(ClassLoader cl, String className, Context context)            throws InstantiationException, IllegalAccessException,             ClassNotFoundException {        return newApplication(cl.loadClass(className), context);}

Instrumentation.java:

static public Application newApplication(Class<?> clazz, Context context)            throws InstantiationException, IllegalAccessException, ClassNotFoundException {        Application app = (Application)clazz.newInstance();        app.attach(context);        return app;}

Application.java:

/** * @hide */* package */ final void attach(Context context) {        attachBaseContext(context);//这里就是关联的地方,把ContextImpl的context实例传递进attachBaseContext里面        mLoadedApk = ContextImpl.getImpl(context).mPackageInfo;}attachBaseContext做的事情:ContextWrapper.java:protected void attachBaseContext(Context base) {        if (mBase != null) {            throw new IllegalStateException("Base context already set");        }        mBase = base;}//contextimpl的实例就传递给contextwrapper的mBase了,绑定完成。

 

更多相关文章

  1. android中无限循环滑动的gallery实例
  2. Android中AlertDialog用法实例分析
  3. Delphi xe7 FireMonkey / Mobile (Android, iOS)生成 QR Code完
  4. Android开发实例之登录界面的实现
  5. eclipse 中绑定 android源码
  6. Android JNI和NDK学习(09)--JNI实例二 传递类对象
  7. android NDK/JNI-实例开发流程
  8. Android Tab 控件详解及实例
  9. Material Design综合实例

随机推荐

  1. Android触屏事件处理流程浅析
  2. Android内存监听的方法
  3. 浅析移动开发
  4. 通过aidl service调用activity
  5. android apk 应用 重新签名 方法
  6. Android(安卓)开发艺术探索读书笔记 9 --
  7. Android版本管理(git 和 repo)
  8. arcgis for android 学习 - (4) 了解mapV
  9. 用python开发android应用 【转载】
  10. android瀑布流,完美解决滑动过程中item位