У програмуванні Android, що саме таке Context
клас і для чого він використовується?
Я читав про це на сайті розробника , але не можу його зрозуміти чітко.
У програмуванні Android, що саме таке Context
клас і для чого він використовується?
Я читав про це на сайті розробника , але не можу його зрозуміти чітко.
Відповіді:
Простіше кажучи:
Як випливає з назви, це контекст поточного стану програми / об'єкта. Це дозволяє новоствореним об’єктам зрозуміти, що відбувається. Зазвичай ви телефонуєте йому, щоб отримати інформацію про іншу частину програми (діяльність та пакет / додаток).
Ви можете отримати контекст виклику getApplicationContext()
, getContext()
, getBaseContext()
або this
(якщо в класі , який простягається від Context
, наприклад, додатки, активність, класи обслуговування і IntentService).
Типове використання контексту:
Створення нових об’єктів : Створення нових поглядів, адаптерів, слухачів:
TextView tv = new TextView(getContext());
ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
Доступ до стандартних загальних ресурсів : такі послуги, як LAYOUT_INFLATER_SERVICE, SharedPreferences:
context.getSystemService(LAYOUT_INFLATER_SERVICE)
getApplicationContext().getSharedPreferences(*name*, *mode*);
Доступ до компонентів неявно : Стосовно постачальників вмісту, передач, намірів
getApplicationContext().getContentResolver().query(uri, ...);
context.getSystemService(LAYOUT_INFLATER_SERVICE)
, де і як це context
визначено?
Поміркуйте, Person-X є генеральним директором компанії-початківця програмного забезпечення.
У компанії присутній провідний архітектор, цей головний архітектор виконує всю роботу в компанії, яка передбачає такі, як база даних, користувальницький інтерфейс тощо.
Тепер генеральний директор наймає нового розробника.
Саме архітектор повідомляє про відповідальність новоспеченої особи на основі навичок нової людини, чи буде він працювати в базі даних або інтерфейсі тощо.
Це як доступ андроїд-активності до ресурсу програми.
Це схоже на те, коли ви відвідуєте готель, хочете сніданок, обід та вечерю у відповідні терміни, правда?
Є багато інших речей, які вам подобаються під час перебування. Як ви отримуєте ці речі?
Ви просите людину, яка обслуговує номер, принести ці речі для вас.
Тут людина, яка обслуговує номер - це контекст, враховуючи, що ви є єдиною діяльністю, і готель стане вашим додатком, нарешті, ресурси повинні бути сніданком, обідом та вечерею.
Що включає контекст:
Ще один спосіб описати це: Розгляньте контекст як віддалений від телевізора та каналу на телебаченні ресурси, послуги з використанням намірів тощо - - - Тут віддалений функціонує як доступ, щоб отримати доступ до всіх різних ресурсів на перший план.
Отже, Remote має доступ до таких каналів, як ресурси, послуги, використовуючи наміри тощо.
Так само ... Кожен, хто має доступ до віддаленого, природно має доступ до всіх речей, таких як ресурси, послуги, використовуючи наміри тощо
Різні методи, за допомогою яких можна отримати контекст
getApplicationContext()
getContext()
getBaseContext()
this
(якщо в класі активності)Приклад:
TextView tv = new TextView(this);
Ключове слово this
посилається на контекст поточної діяльності.
getApplicationContext()
, getContext()
, getBaseContext()
..... дивіться це -> ( stackoverflow.com/a/10641257 )
SomeActivityName.this
. IN потік для екземпляра this
стосується потоку, а не активності
Тема контексту в Android, здається, бентежить багатьох. Люди просто знають, що Context потрібен досить часто, щоб робити основні речі в Android. Люди іноді панікують, тому що вони намагаються виконати якусь операцію, яка вимагає контексту, і вони не знають, як «отримати» потрібний контекст. Я спробую демістифікувати ідею Context в Android. Повне звернення до цього питання виходить за межі цієї публікації, але я спробую дати загальний огляд, щоб ви мали уявлення про те, що таке контекст і як ним користуватися. Щоб зрозуміти, що таке контекст, давайте подивимось на вихідний код:
Що саме таке Контекст?
Ну а сама документація дає досить просте пояснення: клас Context - це "інтерфейс до глобальної інформації про середовище програми".
Сам клас контексту оголошений абстрактним класом, реалізацію якого забезпечує ОС Android. Документація додатково передбачає, що Контекст "... дозволяє отримати доступ до ресурсів і класів, що стосуються додатків, а також додаткові виклики для операцій на рівні додатків, таких як запуск діяльності, трансляція та отримання намірів тощо".
Зараз ви можете дуже добре зрозуміти, чому ім’я Контекст. Це тому, що це просто так. Контекст надає посилання або гачок, якщо ви хочете, для діяльності, сервісу або будь-якого іншого компонента, тим самим пов'язуючи його з системою, що дозволяє отримати доступ до глобального середовища програми. Іншими словами: Контекст дає відповідь на питання про компоненти, "де я, пекло, по відношенню до програми, і як я можу отримати доступ / спілкуватися з рештою програми?" Якщо все це здається дещо заплутаним, швидкий огляд методів, викритих класом Context, дає ще деякі підказки про його справжню природу.
Ось випадковий вибірки цих методів:
getAssets()
getResources()
getPackageManager()
getString()
getSharedPrefsFile()
Що спільного для всіх цих методів? Усі вони дозволяють кожному, хто має доступ до контексту, мати можливість отримати доступ до ресурсів, що стосуються додатків.
Іншими словами, контекст підключає компонент, який має посилання на нього в іншому середовищі програми. Наприклад, папка "/ папки активів" у вашому проекті доступна в додатку за умови, що діяльність, сервіс або що інше знає, як отримати доступ до цих ресурсів. Те саме стосується того, getResources()
що дозволяє робити такі речі, які зачеплять getResources().getColor()
вас до colors.xml
ресурсу (ніколи не майте на увазі, що aapt дозволяє отримати доступ до ресурсів за допомогою коду Java, це окрема проблема).
Підсумок - Context
це те, що дозволяє отримати доступ до системних ресурсів та його компонентів, що приєднуються до «більшої програми». Давайте розглянемо підкласи Context
класів, які забезпечують реалізацію рефератуContext
класу. Найбільш очевидний класом є Activity
класом. Activity
Успадкував від того ContextThemeWrapper
, що успадковує від ContextWrapper
, який успадковує від Context
себе. Ці класи корисно дивитись, щоб зрозуміти речі на більш глибокому рівні, але поки що достатньо знати, що ContextThemeWrapper
і дляContextWrapper
майже все те, що вони звучать. Вони реалізують абстрактні елементи Context
клас сам, "загортаючи" контекст (власне контекст) і делегуючи ці функції до цього контексту. Приклад корисний - уContextWrapper
клас, абстрактний метод getAssets
з Context
класу реалізується наступним чином:
@Override
public AssetManager getAssets() {
return mBase.getAssets();
}
mBase
це просто поле, встановлене конструктором у конкретний контекст. Таким чином, контекст загортається і ContextWrapper
делегує його реалізацію методу getAssets до цього контексту. Давайте повернемось до вивчення Activity
класу, який в кінцевому рахунку успадковується, Context
щоб побачити, як це все працює.
Ви, напевно, знаєте, що таке Діяльність, але для перегляду - це в основному єдина річ, яку може зробити користувач. Він повинен забезпечити вікно, в якому розмістити інтерфейс користувача, з яким користувач взаємодіє '. Розробники, знайомі з іншими API та навіть не розробники, можуть подумати про це просто "екраном". Це технічно неточно, але це не має значення для наших цілей. Отже , як Activity
і Context
взаємодіють і що саме відбувається в їх відносинах спадкування?
Знову ж, корисно подивитися конкретні приклади. Усі ми знаємо, як запустити «Діяльність». За умови, що у вас є "контекст", з якого ви починаєте діяльність, ви просто телефонуєтеstartActivity(intent)
, де інтенція описує контекст, з якого ви починаєте діяльність, і діяльність, яку ви хочете почати. Це знайоме startActivity(this, SomeOtherActivity.class)
.
А що таке this
? this
- це ваша активність, тому що Activity
клас успадковує від Context
. Повний совок такий: Коли ви телефонуєте startActivity
, в кінцевому рахунку Activity
клас виконує щось подібне:
Instrumentation.ActivityResult ar =
mInstrumentation.execStartActivity(
this, mMainThread.getApplicationThread(), mToken, this,
intent, requestCode);
Таким чином, він використовується execStartActivity
від Instrumentation
класу (власне, з внутрішнього класу вInstrumentation
називається ActivityResult
).
У цей момент ми починаємо заглядати у внутрішні системи.
Тут ОС насправді обробляє все. Отже, як саме Instrumentation запускає діяльність? Що ж, параметр this
у execStartActivity
наведеному вище способі - це ваша активність, тобто контекст, і execStartActivity
використовує цей контекст.
Огляд 30 000 такий: клас Приладобудування відслідковує список видів діяльності, які він контролює, щоб зробити це своєю роботою. Цей список використовується для координації всіх видів діяльності та забезпечення впевненості в управлінні потоком діяльності.
Є деякі операції, які я не до кінця вивчив, в яких питаннях координати нитки та процеси. Зрештою, ActivityResult
використовується нативна операція - ActivityManagerNative.getDefault().startActivity()
яка використовує те, Context
що ви передали, коли ви дзвонили startActivity
. Контекст, який ви передали, використовується, якщо це потрібно, щоб допомогти у вирішенні намірів. Розв'язання намірів - це процес, за допомогою якого система може визначити ціль наміру, якщо вона не надається. (Ознайомтеся з посібником тут для отримання більш детальної інформації).
А для того, щоб Android це зробив, йому потрібен доступ до інформації, яку надає компанія Context
. Зокрема, системі потрібно отримати доступ до ContentResolver
так, щоб вона могла "визначити тип MIME даних намірів". Це весь біт про те, як startActivity
використання контексту було дещо складним, і я не повністю розумію внутрішню інформацію. Мій головний пункт полягала лише в тому, щоб проілюструвати, яким чином потрібно отримати доступ до ресурсів для всіх додатків, щоб виконати багато операцій, які є важливими для програми. Context
Це те, що забезпечує доступ до цих ресурсів. Простішим прикладом можуть бути представлення даних. Усі ми знаємо, що ви створюєте користувацький перегляд за допомогою розширення RelativeLayout
чи іншого View
класу, ви повинні надати конструктор, який займаєContext
як аргумент. Коли ви створюєте власний перегляд, ви переходите в контекст. Чому? Тому що Перегляд повинен мати доступ до тем, ресурсів та інших деталей конфігурації Перегляду. Конфігурація перегляду насправді є прекрасним прикладом. Кожен контекст має різні параметри (поля в Context
реалізаціях s), які встановлює сама ОС для таких речей, як розмірність або щільність відображення. Неважко зрозуміти, чому ця інформація важлива для налаштування переглядів тощо.
Одне заключне слово: чомусь люди, які не знають про Android (і навіть люди не такі нові), схоже, повністю забувають про об'єктно-орієнтоване програмування, коли мова йде про Android. Чомусь люди намагаються прив’язати свою розробку Android до заздалегідь задуманих парадигм чи вивченої поведінки.
Android має власну парадигму та певний зразок, який насправді цілком відповідає, якщо відпустити ваші заздалегідь задумані поняття та просто прочитати документацію та посібник із розробників. Моя реальна думка, однак, хоча «отримати правильний контекст» іноді може бути складним, люди невиправдано панікують, оскільки вони стикаються з ситуацією, коли їм потрібен контекст, і думають, що у них цього немає. Знову ж таки, Java - об'єктно-орієнтована мова із спадковим дизайном.
Ви лише "маєте" контекст у своїй діяльності, оскільки сама діяльність успадковується від контексту. У цьому немає ніякої магії (крім усього, що ОС робить сама, щоб встановити різні параметри та правильно "налаштувати" ваш контекст). Отже, відкладаючи проблеми з пам’яттю / продуктивністю (наприклад, зберігання посилань на контекст, коли вам не потрібно робити це чи робити це таким чином, що має негативні наслідки для пам’яті тощо), Контекст - це об’єкт, як і будь-який інший, і його можна передавати навколо як і будь-який POJO (звичайний звичайний об'єкт Java). Іноді вам може знадобитися робити розумні речі, щоб отримати цей контекст, але будь-який звичайний клас Java, який поширюється ні на що, крім самого Object, може бути записаний таким чином, що має доступ до контексту; просто розкрийте публічний метод, який займає контекст, а потім використовуйте його в цьому класі за потребою.
Контекст - це ручка до системи; він надає такі послуги, як вирішення ресурсів, отримання доступу до баз даних та налаштувань тощо. У додатку для Android є діяльність. Контекст - це як ручка до середовища, у якому зараз працює ваша програма. Об'єкт діяльності успадковує об'єкт контексту.
Для отримання додаткової інформації дивіться у вступі до розробки Android з Android Studio - Підручник .
Context
є "інтерфейсом" до глобальної інформації про прикладне середовище. На практиці Context
це насправді абстрактний клас , реалізацію якого забезпечує система Android.
Він дозволяє отримати доступ до ресурсів і класів, що стосуються додатків, а також до викликів операцій на рівні додатків, таких як запуск діяльності, трансляція та отримання намірів тощо.
На наступному малюнку ви можете бачити ієрархію класів, де Context
знаходиться кореневий клас цієї ієрархії. Зокрема, варто підкреслити, що Activity
це нащадок Context
.
Що Context
саме?
Відповідно до довідкової документації на Android, це об'єкт, який представляє різні дані про середовище. Він забезпечує доступ до локальних файлів, баз даних, навантажувачів класів, пов'язаних із середовищем, служб (включаючи послуги на рівні системи) тощо. У цій книзі та в щоденному кодуванні Android ви бачите, що Контекст часто проходить навколо.
З книги " Android на практиці ", с. 60.
Для декількох API для API потрібен Context
параметр
Якщо ви подивитеся на різні Android API, ви помітите, що багато з них беруть android.content.Context
об’єкт за параметр. Ви також побачите, що діяльність або послуга зазвичай використовується як
Context
. Це працює, тому що обидва ці класи походять від Context
.
Простий приклад для розуміння context
в android:
У кожного начальника є помічник для догляду, виконання всіх менш важливих і трудомістких завдань. Якщо потрібна напилка або чашка кави, помічник помічників. Деякі начальники ледь знають, що відбувається в офісі, тому вони запитують своїх помічників щодо цього теж. Вони роблять певну роботу самі, але для більшості інших речей їм потрібна допомога помічників.
У цьому сценарії
Boss - це додаток Android
Асистент - це контекст
Файли / чашка кави - це ресурси
Ми зазвичай називаємо контекст, коли нам потрібно отримати інформацію про різні частини нашого додатку, такі як Діяльність, Програми тощо.
Деякі операції (речі, де потрібен помічник), де задіяний контекст:
Різні способи отримання контексту:
getContext()
getBaseContext()
getApplicationContext()
this
Контекст Android - це інтерфейс (у загальному розумінні, не в сенсі Java; в Java - Context
це фактично абстрактний клас!), Який дозволяє отримати доступ до конкретних ресурсів програми та класу та інформації про середовище програми.
Якби ваш додаток для Android був веб-додатком, ваш контекст був би чимось подібним до ServletContext
(я не роблю тут точного порівняння).
Ваша діяльність та послуги також розширюються Context
, тому вони успадковують усі ці методи доступу до інформації про навколишнє середовище, в якій працює додаток.
Context
являє собою ручку для отримання даних про навколишнє середовище.Context
Сам клас оголошено абстрактним, реалізацію якого забезпечує ОС Android.Context
це як віддалений від телевізора та каналу телевізор - це ресурси, послуги тощо.
Що ти можеш з цим зробити?
Способи отримання контексту:
Просто виставивши його там для новачків;
Отже, спочатку зрозумійте контекст слова:
В англійській мові. це означає:
"Обставини, що формують умову події, висловлювання чи ідеї, і з точки зору їх можна повністю зрозуміти та оцінити".
"Частини чогось написаного чи вимовленого, які негайно передують і слідують за словом чи уривком, і уточнюють його значення".
Тепер покладіть те саме розуміння на світ програмування:
контекст поточного стану програми / об'єкта. Це дозволяє новоствореним об’єктам зрозуміти, що відбувається. Зазвичай ви телефонуєте йому, щоб отримати інформацію про іншу частину вашої програми (діяльність, пакет / додаток)
Контекст можна отримати за допомогою виклику getApplicationContext()
, getContext(), getBaseContext()
або this
(коли в класі активності).
Щоб отримати контекст будь-де в додатку, використовуйте такий код:
Створіть новий клас AppContext
у вашому додатку для Android
public class AppContext extends Application {
private static Context context;
public void onCreate(){
super.onCreate();
AppContext.context = getApplicationContext();
}
public static Context getAppContext() {
return AppContext.context;
}
}
Тепер будь-коли, коли вам потрібно контекст програми у класі неактивності, зателефонуйте цьому методу та у вас є контекст програми.
Сподіваюся, що це допоможе;)
Клас android.content.Context
забезпечує підключення до системи Android та ресурси проекту. Це інтерфейс до глобальної інформації про прикладне середовище.
Контекст також забезпечує доступ до служб Android, наприклад, до служби локації.
Діяльність та послуги розширюють Context
клас.
Контекст - екземпляри класу android.content.Context забезпечують підключення до системи Android, яка виконує програму. Наприклад, ви можете перевірити розмір відображення поточного пристрою за допомогою контексту.
Це також дає доступ до ресурсів проекту. Це інтерфейс до глобальної інформації про прикладне середовище.
Клас контексту також забезпечує доступ до служб Android, наприклад, диспетчера сигналів для запуску подій, заснованих на часі.
Діяльність та послуги поширюють клас контексту. Тому їх можна безпосередньо використовувати для доступу до контексту.
Контекст - це інтерфейс до глобальної інформації про середовище програми. Це абстрактний клас, реалізація якого забезпечується Android
системою.
Context
дозволяє отримати доступ до ресурсів та класів, що стосуються додатків, а також виклики для операцій на рівні додатків, таких як launching activities, broadcasting and receiving intents, etc.
Ось приклад
public class MyActivity extends Activity {
public void Testing() {
Context actContext = this; /*returns the Activity Context since Activity extends Context.*/
Context appContext = getApplicationContext(); /*returns the context of the single, global Application object of the current process. */
Button BtnShowAct1 = (Button) findViewById(R.id.btnGoToAct1);
Context BtnContext = BtnShowAct1.getContext(); /*returns the context of the View. */
Для отримання більш детальної інформації ви можете відвідати http://developer.android.com/reference/android/content/Context.html
Контекст - це в основному доступ до ресурсів та отримання деталей про середовище програми (для контексту програми) або діяльності (для контексту діяльності) або будь-якого іншого ...
Щоб уникнути витоку пам’яті, слід використовувати контекст програми для всіх компонентів, яким потрібен контекстний об’єкт .... для більшого клацання тут
Контекст - це контекст поточного стану програми / об'єкта. Він є об'єктом, який представляє різні дані середовища. Контекст допомагає поточній діяльності взаємодіяти із зовнішнім середовищем Android, наприклад, локальними файлами, базами даних, класовими навантажувачами, пов’язаними із середовищем, сервісами, що включають послуги на рівні системи тощо.
Контекст - це ручка для системи. Він надає такі послуги, як вирішення ресурсів, отримання доступу до баз даних та налаштувань тощо. У додатку для Android є діяльність. Це як ручка до середовища, у якому зараз працює ваша програма. Об'єкт діяльності успадковує об'єкт контексту.
Різні методи виклику, за допомогою яких можна отримати контекст 1. getApplicationContext (), 2. getContext (), 3. getBaseContext () 4. або це (коли знаходиться у класі активності).
Контекст означає, що Android дізнається про те, в якій діяльності я повинен зайнятися чи діяти.
1 - Toast.makeText(context, "Enter All Details", Toast.LENGTH_SHORT).show();
це використовується в цьому.
Context context = ActivityName.this;
2 -startActivity(new Intent(context,LoginActivity.class));
в цьому контексті означає, з якої діяльності ви хочете перейти до іншої діяльності. контекст або ActivityName.this швидше, getContext і getApplicatinContext.
A Context
це те, що більшість із нас назвали б Application . Він створений системою Android і здатний робити лише те, що вміє програма. У Tomcat контекст - це також те, що я би назвав додатком.
Є один контекст, який містить багато заходів, кожна діяльність може мати багато переглядів.
Очевидно, хтось скаже, що це не підходить через те чи інше, і вони, ймовірно, вірні, але сказати, що контекст - це ваша поточна програма, допоможе вам зрозуміти, що ви вводите в параметри методу.
Давайте маємо невелику аналогію перед зануренням у глибину технічності контексту
У кожного Боса є помічник або хтось (доручаючий хлопчик), який робить для нього менш важливі та більш трудомісткі речі. Наприклад, якщо їм потрібен файл або кава, тоді помічник буде працювати. Бос не знатиме, що відбувається у фоновому режимі, але файл або завдання будуть доставлені
Тож ось
Бос -
Асистент додатків для Android -
Файл контексту чи чашка кави - Ресурс
Контекст - це точка доступу до ресурсів, пов’язаних із додатками
Давайте подивимось деякі такі ресурси чи завдання
Запуск діяльності.
Отримання абсолютного шляху до каталогу кешу додатків у файловій системі.
Визначення того, чи дозволений даний дозвіл для певного процесу та ідентифікатора користувача, що працює в системі.
Перевірка, чи вам надано певний дозвіл.
І так далі.
Отже, якщо додаток Android хоче розпочати діяльність, це переходить безпосередньо доContext
(точка доступу), і Context
клас повертає йому ресурси (Намір у цьому випадку).
Як і будь-який інший клас Context
класу, також є поля та методи.
Ви можете дізнатися більше про Context
офіційну документацію, вона охоплює майже все, доступні методи, поля і навіть як використовувати поля з методами.
Примірники класу android.content.Context забезпечують підключення до системи Android, яка виконує додаток. Наприклад, ви можете перевірити розмір відображення поточного пристрою за допомогою контексту.
Це також дає доступ до ресурсів проекту. Це інтерфейс до глобальної інформації про прикладне середовище.
Клас контексту також забезпечує доступ до служб Android, наприклад, диспетчера сигналів для запуску подій, заснованих на часі.
Діяльність та послуги поширюють клас контексту. Тому їх можна безпосередньо використовувати для доступу до контексту.
Якщо ви хочете підключити Контекст до інших знайомих класів в Android, пам’ятайте про цю структуру:
Контекст <ContextWrapper <Додаток
Контекст <ContextWrapper <ContextThemeWrapper <Діяльність
Контекст <ContextWrapper <ContextThemeWrapper <Діяльність <СписокActivity
Контекст <ContextWrapper <Сервіс
Контекст <ContextWrapper <Сервіс <IntentService
Отже, всі ці заняття по-своєму є контекстами. Якщо ви хочете, ви можете передавати Service та ListActivity в контекст . Але якщо придивитись уважно, деякі класи також успадковують тему. У діяльності чи фрагменті ви хочете, щоб їх тематику було застосовано до ваших поглядів, але це не стосується , наприклад, класу обслуговування .
Я пояснюю різницю в контекстах тут .
Простіше кажучи, Андроїди Context
- це безлад, який ви не полюбите, поки не перестанете хвилюватися.
Android Context
s:
Бог-об’єкти.
Це означає, що ви хочете обходити всі свої програми, коли ви починаєте розробляти для Android, але уникнете цього, коли ви трохи наблизиться до програмування, тестування та самого Android.
Неясна залежність.
Поширене джерело витоку пам'яті.
PITA для тестування.
Фактичний контекст, який використовується системою Android для розсилки дозволів, ресурсів, уподобань, служб, трансляцій, стилів, показу діалогів та надувного макета. І вам потрібні різні Context
екземпляри для окремих речей (очевидно, ви не можете показати діалогове вікно з контексту програми чи послуги; макети, завищені від контексту програми та діяльності, можуть відрізнятися).
Контекст андроїда конкретних апі для кожної програми-s пісочниці , яка забезпечує доступ додатки особисті дані , таку як до ресурсів, баз даних, приватним filedirectories, перевагу, настройка ...
Більшість приватних даних однакові для всіх заходів / служб / трансляторів однієї програми.
Оскільки Application, Activity, Service реалізують інтерфейс контексту, вони можуть бути використані там, де для виклику api потрібен параметр контексту
Context
означає компонент (або застосування) в різні часові періоди. Якщо я з'їдаю стільки їжі від 1 до 14 вечора, то мій контекст того часу використовується для доступу до всіх методів (або ресурсів), якими я користуюсь за цей час. Вміст є компонентом (додатком) на певний час. Context
компоненти компонентів програми постійно змінюються на основі базового життєвого циклу компонентів або програми. Наприклад, всередині onCreate () для Activity
,
getBaseContext()
- дає context
з , Activity
який встановлюється (створюється) конструктором діяльності.
getApplicationContext()
- дає Context
налаштування (створено) під час створення програми.
Примітка: <application>
вміщує всі Android-компоненти.
<application>
<activity> .. </activity>
<service> .. </service>
<receiver> .. </receiver>
<provider> .. </provider>
</application>
Це означає, що коли ви телефонуєте getApplicationContext()
зсередини будь-якого компонента, ви викликаєте загальний контекст усієї програми.
Context
продовжує модифікуватися системою на основі життєвого циклу компонентів.
Подумайте про контекст як прапорець з різними ресурсами: рядком, кольорами та шрифтами. Якщо вам потрібен ресурс, ви переходите до цього поля. Коли ви обертаєте екран, це поле змінюється, оскільки орієнтація змінюється на пейзаж.
Context
означає струм.
Context
використовувати для виконання операції для поточного екрана. колишній
1. getApplicationContext ()
2. getContext ()
Toast.makeText(getApplicationContext(), "hello", Toast.LENGTH_SHORT).show();
Чудові пояснення! Щоб доповнити все вищесказане, я вважаю цей від MindOrks дуже корисним, навіть показує деякі основні випадки використання, щоб зробити ваш розум:
У Java ми кажемо, що це ключове слово стосується стану поточного об'єкта програми.
Аналогічно, в альтернативному варіанті у нас є Context
Android Development.
Це можна визначити явно або неявно,
Context con = this;
getApplicationContext();
getBaseContext();
getContext();
this
працює лише в діяльності. Контекст не є альтернативою "цьому" - контекст використовується для доступу до функцій системи та багато іншого. Ви надто спрощуєте контекст і не вистачаєте головного моменту в ньому.
Цей атрибут оголошує, з якою діяльністю пов’язано цю компоновку за замовчуванням .