activity 里面的this 怎么理解?
比如this.getResources()方法;
实际上是//android.content.ContextWrapper.getResources()的方法。debug的时候发现this 的value 是ActivityThread 。this应该是activity的对象指针,但是又可以传递给Context谁知道怎么理解啊
------------------------------------------
附:
activity源代码的定义:
public class Activity extends ContextThemeWrapper
        implements LayoutInflater.Factory,
        Window.Callback, KeyEvent.Callback,
        OnCreateContextMenuListener, ComponentCallbacks {ContextWrapper源代码的getResources()方法:
ContextWrapper.java
... ...
    Context mBase;
    @Override
    public Resources getResources()
    {
        return mBase.getResources();
    }在附加Context源代码中的getResources()方法实现:
Context.java
    /** Return a Resources instance for your application's package. */
    public abstract Resources getResources();奇怪了,上面mBase.getResources();调用的竟然是一个抽象方法,这怎么可以?

解决方案 »

  1.   

    this确实是当前activity的指针,它可以传给Context是因为Activity是Context的一个子类
      

  2.   

      /** Return a Resources instance for your application's package. */
      public abstract Resources getResources();
    public Resources getResources()
      {
      return mBase.getResources();
      }
    mBase 肯定实例化过了这是必须的   
      

  3.   

    可以理解为当前Activity的上下文环境吧。
      

  4.   

    LZ学过MFC么,和MFC中类里的this是一样的。
      

  5.   

    不好意思,activity里的this就是context,普通类中的this就是类本身。
      

  6.   


    Known Direct Subclasses  //Context直接子类有2个
    ContextWrapper, MockContext Known Indirect Subclasses  //Context间接子类包含activity
    AbstractInputMethodService, AccessibilityService, AccountAuthenticatorActivity, Activity, ActivityGroup, AliasActivity, Application, BackupAgent, BackupAgentHelper, ContextThemeWrapper, ExpandableListActivity, InputMethodService, IntentService, IsolatedContext, LauncherActivity, ListActivity, MockApplication, MutableContextWrapper, PreferenceActivity, RecognitionService, RenamingDelegatingContext, Service, TabActivity, WallpaperService  第一个问题解决了:activity是context的孙子类,所以this指针可以赋给context。
    第二个问题,activity.java源代码中没有getResources()方法。
    this.getResources();是子类的对象指针调用父类方法。
      

  7.   

    activity里的this就是context,普通类中的this就是类本身