Діяльність та контекст однакові, чи існують відмінності?
Коли мені повинен метод передавати Activity, а коли Context?
Діяльність та контекст однакові, чи існують відмінності?
Коли мені повинен метод передавати Activity, а коли Context?
Відповіді:
Наскільки я розумію:
контекст - це базовий об’єкт. Отже, кожна діяльність, подібна до програми, походить від контексту. Це означає, що кожна діяльність та кожна Application
ІС є Context
;
З developer.android.com
Діяльності
java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.view.ContextThemeWrapper
↳ android.app.Activity
java.lang.Object
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.app.Application
Контекст програми триває, доки ваш додаток живий, тоді як контекст Activity помирає разом з вашим Activity (він не діє після onDestroy
цієї активності).
Отже, якщо вам потрібен контекст між діяльністю (тобто в Singleton), вам буде краще використовувати контекст програми.
Зазвичай для методів Android Framework, де очікується контекст, немає різниці, який саме ви передасте. Але завжди пам’ятайте про MemoryLeaks, якщо ви зберігаєте довгоживучі посилання на контекст
Як ви можете бачити в документі Android :
Клас Activity поширюється від "ContextThemeWrapper", а цей - від "ContextWrapper", а той - від "Context".
Так, так, Активність розширює контекст!