getApplicationContext (), getBaseContext (), getApplication (), getParent ()


94

Яка різниця між:

  1. getApplicationContext()
  2. getBasecontext()
  3. getApplication()
  4. getParent()

Чи можете ви розповісти на одному простому прикладі?


1
будь ласка, перейдіть через stackoverflow.com/questions/1026973/…, що визначає те саме, що також developer.android.com/reference/android/content/Context.html
Балбан,

Відповіді:


33

getApplicationContext() Контекст програми пов'язаний із програмою і завжди буде однаковим протягом усього життєвого циклу.

getBasecontext()не слід використовувати, просто використовуйте Contextзамість нього, який пов'язаний з діяльністю і може бути знищений, коли діяльність знищена.


16
як щодо getApplication () та getParent ()
Nikunj Patel

107

getApplicationContext () Контекст програми пов'язаний з Applicaition і завжди буде однаковим протягом усього життєвого циклу.

getBasecontext () не слід використовувати, просто використовуйте Context замість нього, який пов'язаний з діяльністю і може бути знищений, коли активність буде знищена.

getApplication () доступний лише для Діяльності та Служб. Хоча в поточних реалізаціях Android Activity і Service getApplication () та getApplicationContext () повертають той самий об’єкт, немає гарантії, що це завжди буде так (наприклад, у конкретній реалізації постачальника). Отже, якщо вам потрібен клас Application, який ви зареєстрували в Manifest, вам ніколи не слід викликати getApplicationContext () і передавати його своєму додатку, оскільки це може бути не екземпляр програми (що ви, очевидно, відчували з тестовою структурою).

getParent () повертає об'єкт діяльності, якщо поточне подання є дочірньою системою.


16
Як ви вже згадували, ми не повинні використовувати getBaseContext (), якщо це не так важливо, то чому це в кодуванні та в чому його основні переваги. будь ласка, розкажіть мені про це
Пір Фахім Шах

getBaseContext () слід використовувати в дуже конкретних ситуаціях. Тут є дуже гарне пояснення - medium.com/@ali.muzaffar/…
lomza
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.