Какие различные типы контекста могут быть использованы вместо деятельности? - PullRequest
1 голос
/ 13 июня 2019

Я читал документацию по посредничеству admob и видел это, но я немного сбит с толку, потому что я подумал, что когда вы используете «это», это относится к действию, в котором вы находитесь. Оно говорит, что они рекомендуют передать экземпляр Activity, например, ниже. Я думал, что это был единственный возможный способ, знает ли кто-нибудь пример того, что будет контекстом, который я передам, а не моей текущей деятельностью?

adView = new AdView(this);

enter image description here

1 Ответ

1 голос
/ 14 июня 2019

"Я читал документацию по посредничеству admob и видел это, но я немного растерялся, потому что думал, что когда вы используете слово" this ", это относится к деятельности, в которой вы находитесь."

Вы немного не правы.this относится к вашему текущему объекту.Из документации Java :

Внутри метода экземпляра или конструктора this является ссылкой на текущий объект - объект, чей метод или конструктор вызывается.Вы можете ссылаться на любой член текущего объекта из метода экземпляра или конструктора, используя this.

Например, this в анонимном классе будет ссылаться на класс объекта:

View view;
view.setOnClickListener(new View.OnClickListener() {
        @Override public void onClick(View v) {
          // this will refer to View.OnClickListener object.
        }
      });

Я думал, что это был единственный возможный способ, кто-нибудь знает пример того, что будет контекст, который я бы пропустил, это не моя текущая деятельность?

Вы также можете создать AdView внутри класса Application, хотя это то, что я никогда не рекомендовал:

public MyApp extends Application {
  private AdView mAdView;

   ...
   public void createAdView() {
     // this will refer to MyApp which is a context.
     mAdView = new AdView(this);

     ...
     // the rest is history
   }
}

Или кто-то создаст Util для генерации AdView, но забудет ограничить контекст только действием.:

public AdUtil {
  private AdUtil(){}

  ...

  // Here the parameter context can be Application, Activity, etc.
  public static AdView createAdView(Context context) {
    AdView adView = new AdView(this);

    ...
    return adView;
  }
}
...