2013-12-04 2 views
1

Привет я полностью запутался может кто-нибудь, пожалуйста, объясните разницу между этими методами получения контекста и деятельности:разница в деятельности и контекст и методы получения их

public static final void onResume(Context context, MBase mem) { 
    function.start(id, context); 
} 
public static final void onResume(Context context, MBase mem) { 
    function.start(id, (Activity) context); 
} 
public static final void onResume(Activity activity, MBase mem) { 
    function.start(id, activity); 
} 

ответ

1

насколько я понимаю: Context это базовый объект , Так что каждый Activity такой же, как Application происходит от контекста. Это означает, что каждое действие и каждое приложение являются контекстом;

Итак, для обобщенного вызова вы можете использовать Контекст и для вызова из Activity. Специально вы можете использовать только Activity.

+0

Привет спасибо за ответ, я подумал, что, но только вторую и третью одну работу при использовании его в качестве ссылки на 3-й партию поставщик рекламы и предложения от ADT - это изменение типа контекста для активности – law

+0

ok, его просто потому, что для этого потребуется только ссылка на активность. Означает, что сторонний метод провайдера рекламы будет принимать объект Activity так. И он может принимать объект контекста, но его тип должен быть преобразован в Activity – GOLDEE

+0

О, я вижу! Огромное спасибо! – law

1

Деятельность распространяется из контекста.

java.lang.Object ↳ android.content.Context ↳ android.content.ContextWrapper ↳ android.view.ContextThemeWrapper ↳ android.app.Activity

(активность) контекст типа Кастинг. Контекст - это базовый класс. Это как автомобиль (Activity) - это своего рода транспортное средство (Context), но транспортное средство - это не автомобиль.

+0

Спасибо, что ответили! это полезно – law

0

Контекст - это суперкласс деятельности, а также среди прочих услуг и приложений. Это означает, что листинг контекста (второй пример) может быть небезопасным, если вы предоставляете ему контекст без активности.

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

public void startFunction(Function function, MBase mem) { 
    function.start(id, this); 
} 
+0

спасибо за подход oop, рассмотрим это также – law

Смежные вопросы