Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄

Context

Context – это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт доступ ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ функциям прилоТСния: доступ ΠΊ рСсурсам, ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Π²Ρ‹Π·ΠΎΠ² активности ΠΈ Ρ‚.Π΄. Activity являСтся подклассом Context, поэтому Π² ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΊΠ°ΠΊ Π˜ΠΌΡΠΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΠΈ.this (Π½Π°ΠΏΡ€. MainActivity.this), ΠΈΠ»ΠΈ ΡƒΠΊΠΎΡ€ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ запись this. ΠšΠ»Π°ΡΡΡ‹ Service, Application ΠΈ Π΄Ρ€. Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с контСкстом.

Доступ ΠΊ контСксту ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠ°ΠΊ getApplicationContext(), getContext(), getBaseContext() ΠΈΠ»ΠΈ this, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ упоминался Π²Ρ‹ΡˆΠ΅, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² активности.

На ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΠΎΡ€Π°Ρ… Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Достаточно ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ контСкст ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² случаС нСобходимости, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ конструктор Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Context Π² своих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ….

Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Context ΠΈΠΌΠ΅Π΅Ρ‚ свои ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ рСсурсам ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, создавая, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‚ΠΎΡ€ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ сразу ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΅ΠΉ доступ ΠΊ своим рСсурсам, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ относится ΠΊ контСксту. ΠŸΡ€ΠΈ создании собствСнных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² View Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ контСкст Π² конструкторах, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваши рСсурсы. ΠŸΡ€ΠΈ создании собствСнных классов, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ контСксту, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ конструктор:

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, слСдуСт Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ контСкст Π² Ρ€Π°Π·Π½Ρ‹Ρ… ситуациях. Допустим, Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с нСсколькими активностями. Π’ манифСстС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ Ρ‚Π΅ΠΌΡƒ ΠΊΠ°ΠΊ для всСго прилоТСния, Ρ‚Π°ΠΊ ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ активности Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. БоотвСтствСнно, Π²Ρ‹Π±ΠΎΡ€ контСкста повлияСт Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€ΠΈ использовании собствСнной Ρ‚Π΅ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ контСкст активности, Π° Π½Π΅ прилоТСния.

ΠžΡ‡Π΅Π½ΡŒ часто Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты Π²ΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ступор, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… классах, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π’ этом случаС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя класса ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ.

ΠŸΡ€ΠΈ создании Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² для списков Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ контСксту.

Или Π΅Ρ‰Ρ‘ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° Π² Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ListFragment:

Π—Π΄Π΅ΡΡŒ Ρ‚ΠΎΠΆΠ΅ слСдуСт Π±Ρ‹Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ своя Ρ‚Π΅ΠΌΠ° для списка.

ПослСднСС Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ относится ΠΊ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ программистам. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ контСкст ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ источником ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти. Если Π²Ρ‹ создадитС собствСнный класс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится статичСская пСрСмСнная, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ ΠΊ контСксту активности, Ρ‚ΠΎ систСма Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ссылку Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. Если Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚Π°, Ρ‚ΠΎ сборщик мусора Π½Π΅ смоТСт ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ самой Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ активности. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ контСкст прилоТСния Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ getApplicationContext().

ContextCompat

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ совмСстимости появился свой класс для контСкста ContextCompat. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° студия Π²Π΄Ρ€ΡƒΠ³ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½Ρ‘Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² старом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ Π΅Π³ΠΎ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ.

Допустим, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ тСкста Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Бтудия ругаСтся, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ getColor(int, Theme). Π—Π°ΠΌΠ΅Π½ΠΈΠΌ строчку.

Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° исходники этого Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Ρ‚ΠΎΠΆΠ΅ ΠΈΠ΄Ρ‘Ρ‚ Π²Ρ‹Π·ΠΎΠ² Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ сразу ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Ссли Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ Marshmallow ΠΈ Π²Ρ‹ΡˆΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Context β€” контСкст Π² android β€” Ρ‡Ρ‚ΠΎ это, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈ Π·Π°Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ (Context) – это Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ абстрактный класс, рСализация ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ обСспСчиваСтся систСмой Android. Π­Ρ‚ΠΎΡ‚ класс ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для доступа ΠΊ спСцифичным для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ прилоТСния рСсурсам ΠΈ классам ΠΈ слуТит для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния, Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ запуск активностСй, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сообщСний, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. ΠžΡ‚ класса Context Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΈ Π²Π°ΠΆΠ½Ρ‹Π΅ классы, ΠΊΠ°ΠΊ Application, Activity ΠΈ Service, поэтому всС Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступны ΠΈΠ· этих классов.


ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ контСкст Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ (Context) – это Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ абстрактный класс, рСализация ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ обСспСчиваСтся систСмой Android. Π­Ρ‚ΠΎΡ‚ класс ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для доступа ΠΊ спСцифичным для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ прилоТСния рСсурсам ΠΈ классам ΠΈ слуТит для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ прилоТСния, Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ запуск активностСй, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сообщСний, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. ΠžΡ‚ класса Context Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Π΅ ΠΈ Π²Π°ΠΆΠ½Ρ‹Π΅ классы, ΠΊΠ°ΠΊ Application, Activity ΠΈ Service, поэтому всС Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступны ΠΈΠ· этих классов. Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ


ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ контСкст Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΡƒΠΌΡ€Ρ‘Ρ‚ вмСстС с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ:
Toast.makeText(getApplicationContext(), Β«Text Β«, Toast.LENGTH_SHORT).show();

Π‘ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π½ΠΎ Π΄Π°ΠΆΠ΅ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ прилоТСния:
Toast.makeText(getBaseContext(), Β«Text Β«, Toast.LENGTH_SHORT).show();

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄

ЗдравствуйтС! Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ошибка, Π² спискС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² получСния контСкста вмСсто getContext β€” ΠΈ
Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ спасибо Π·Π° ΡƒΡ€ΠΎΠΊΠΈ!

Π”ΠΎΠ±Ρ€Ρ‹ΠΉ дСнь. Π― Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅ Π½Π΅ совсСм Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° понимаю, Π½ΠΎ ΠΏΡ€ΠΈ использовании Toast.makeText(this, Β«TextΒ», Toast.LENGTH_SHORT).show(); сообщСниС Π½Π΅ ΡƒΠΌΠΈΡ€Π°Π΅Ρ‚ вмСстС Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒΡŽ. Π― Π² onCreate помСстил Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:
Toast.makeText(this, Β«This is toastΒ», Toast.LENGTH_LONG).show();
finish();
ΠΈ ΠΏΡ€ΠΈ запускС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ сразу ΠΆΠ΅ ΡƒΠΌΠΈΡ€Π°Π΅Ρ‚, Π° Toast остаСтся Π²ΠΈΠ΄Π½Ρ‹ΠΌ. ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ я дСлаю Π½Π΅ Ρ‚Π°ΠΊ?

ΠœΠ΅Ρ‚ΠΎΠ΄ finish() Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ, Π° Π½Π΅ тост.

Для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ коммСнтария Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Context Π² Android ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Context?

Как слСдуСт ΠΈΠ· названия, это контСкст Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния прилоТСния ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎ позволяСт вновь созданным ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ происходит. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π΅Π³ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Context присутствуСт практичСски ΠΏΠΎΠ²ΡΡŽΠ΄Ρƒ Π² Android ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ являСтся самой Π²Π°ΠΆΠ½ΠΎΠΉ Π΅Π³ΠΎ Ρ‡Π°ΡΡ‚ΡŒΡŽ, поэтому Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС Context ΠΌΠΎΠΆΠ΅Ρ‚ Π»Π΅Π³ΠΊΠΎ привСсти ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ°ΠΌ памяти Π² Android ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

БущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² контСкста, поэтому Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрёмся, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… прСдставляСт ΠΈΠ· сСбя, ΠΊΠ°ΠΊ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ прилоТСния

НапримСр, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ singleton-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для вашСго прилоТСния, ΠΈ этому ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π½ΡƒΠΆΠ΅Π½ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ контСкст, всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ контСкст прилоТСния.

Если Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΡ‚Π΅ контСкст Activity Π² этом случаС, это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ΅ памяти, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ singleton-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ сохранит ссылку Π½Π° Activity ΠΈ ΠΎΠ½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Π° сборщиком мусора, ΠΊΠΎΠ³Π΄Π° это потрСбуСтся.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, getApplicationContext() Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° извСстно, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ контСкст для Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΆΠΈΡ‚ΡŒ дольшС, Ρ‡Π΅ΠΌ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ контСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅ΡΡ‚ΡŒ Π² вашСм распоряТСнии.

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ Activity

Π­Ρ‚ΠΎΡ‚ контСкст доступСн Π² Activity ΠΈ привязан ΠΊ Π΅Ρ‘ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠΌΡƒ Ρ†ΠΈΠΊΠ»Ρƒ. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ Activity слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ контСкст Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Activity ΠΈΠ»ΠΈ Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ контСкст, ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ привязан ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ контСксту.

getContext() Π² ContentProvider

Когда нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ getApplicationContext()?

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ большого ΠΏΠ°Π»ΡŒΡ†Π°

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ контСкст, доступный нСпосрСдствСнно ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ бСзопасно Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ссылку Π½Π° Π½Π΅Π³ΠΎ, Ссли ΠΎΠ½Π° Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° этого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ссылку Π½Π° контСкст Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΆΠΈΠ²Π΅Ρ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ вашСй Activity ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°, Π΄Π°ΠΆΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ссылку Π½Π° контСкст прилоТСния.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ context Π² android studio

Context

Context – это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт доступ ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ функциям прилоТСния: доступ ΠΊ рСсурсам, ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Π²Ρ‹Π·ΠΎΠ² активности ΠΈ Ρ‚.Π΄. Activity являСтся подклассом Context, поэтому Π² ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΊΠ°ΠΊ Π˜ΠΌΡΠΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΠΈ.this (Π½Π°ΠΏΡ€. MainActivity.this), ΠΈΠ»ΠΈ ΡƒΠΊΠΎΡ€ΠΎΡ‡Π΅Π½Π½ΡƒΡŽ запись this. ΠšΠ»Π°ΡΡΡ‹ Service, Application ΠΈ Π΄Ρ€. Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с контСкстом.

Доступ ΠΊ контСксту ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΊΠ°ΠΊ getApplicationContext(), getContext(), getBaseContext() ΠΈΠ»ΠΈ this, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ упоминался Π²Ρ‹ΡˆΠ΅, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² активности.

На ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΠΎΡ€Π°Ρ… Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Π·Π°Ρ‡Π΅ΠΌ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½. Достаточно ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ контСкст ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² случаС нСобходимости, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ конструктор Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Context Π² своих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ….

Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Context ΠΈΠΌΠ΅Π΅Ρ‚ свои ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ рСсурсам ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ.

Π’ΠΎΠ·ΡŒΠΌΡ‘ΠΌ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ getAssets(). Π’Π°ΡˆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ рСсурсы Π² ΠΏΠ°ΠΏΠΊΠ΅ assets вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ рСсурсам, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ контСкста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ рСсурсов для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ доступ β€” Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, слуТба ΠΈ Ρ‚.Π΄. Аналогично происходит с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ getResources. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ рСсурсу Ρ†Π²Π΅Ρ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструкция getResources().getColor(), которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° res/colors.xml.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, создавая, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‚ΠΎΡ€ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ сразу ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π΅ΠΉ доступ ΠΊ своим рСсурсам, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ относится ΠΊ контСксту. ΠŸΡ€ΠΈ создании собствСнных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² View Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ контСкст Π² конструкторах, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваши рСсурсы. ΠŸΡ€ΠΈ создании собствСнных классов, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ контСксту, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ конструктор:

Π§Π΅Ρ€Π΅Π· контСкст ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ практичСски всю ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ β€” имя ΠΏΠ°ΠΊΠ΅Ρ‚Π°, класса ΠΈ Ρ‚.ΠΏ.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, слСдуСт Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒ контСкст Π² Ρ€Π°Π·Π½Ρ‹Ρ… ситуациях. Допустим, Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с нСсколькими активностями. Π’ манифСстС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ Ρ‚Π΅ΠΌΡƒ ΠΊΠ°ΠΊ для всСго прилоТСния, Ρ‚Π°ΠΊ ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ активности Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. БоотвСтствСнно, Π²Ρ‹Π±ΠΎΡ€ контСкста повлияСт Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΡ€ΠΈ использовании собствСнной Ρ‚Π΅ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ контСкст активности, Π° Π½Π΅ прилоТСния.

ΠžΡ‡Π΅Π½ΡŒ часто Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ программисты Π²ΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ступор, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово this Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… классах, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ. Π’ этом случаС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя класса ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌ.

ΠŸΡ€ΠΈ создании Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² для списков Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ контСксту.

Или Π΅Ρ‰Ρ‘ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π° Π² Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ListFragment:

Π—Π΄Π΅ΡΡŒ Ρ‚ΠΎΠΆΠ΅ слСдуСт Π±Ρ‹Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ своя Ρ‚Π΅ΠΌΠ° для списка.

ПослСднСС Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ относится ΠΊ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ программистам. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ контСкст ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ источником ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти. Если Π²Ρ‹ создадитС собствСнный класс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ содСрТится статичСская пСрСмСнная, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ ΠΊ контСксту активности, Ρ‚ΠΎ систСма Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ссылку Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ. Если Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚Π°, Ρ‚ΠΎ сборщик мусора Π½Π΅ смоТСт ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ самой Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ активности. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ контСкст прилоТСния Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ΅Ρ‚ΠΎΠ΄ getApplicationContext().

ContextCompat

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ совмСстимости появился свой класс для контСкста ContextCompat. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° студия Π²Π΄Ρ€ΡƒΠ³ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½Ρ‘Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² старом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ Π΅Π³ΠΎ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ.

Допустим, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ тСкста Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Бтудия ругаСтся, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ getColor(int, Theme). Π—Π°ΠΌΠ΅Π½ΠΈΠΌ строчку.

Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° исходники этого Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°, Ρ‚ΠΎ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Ρ‚ΠΎΠΆΠ΅ ΠΈΠ΄Ρ‘Ρ‚ Π²Ρ‹Π·ΠΎΠ² Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ сразу ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Ссли Π²Ρ‹ ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ Marshmallow ΠΈ Π²Ρ‹ΡˆΠ΅.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст? Π‘ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹ΠΉ взгляд

ПослСдний вопрос я Π·Π°Π΄Π°Π», Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ написания ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…, я понял, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎ Π½Π΅ΠΌ Π½Π΅ знаю 🙂

класс Context содСрТит Π² сСбС Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ рСсурсах систСмы, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ сказано Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π΅. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π² этом вопросС нас интСрСсуСт, Ρ‡Ρ‚ΠΎ ΠΎΠ½ содСрТит, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ, ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ‚Π΅ΠΌΡ‹ (стилСй) для отобраТСния View

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π² качСствС контСкста ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ this? Π­Ρ‚ΠΎ ΠΆΠ΅ ссылка Π½Π° класс

Π•ΡΡ‚ΡŒ Π»ΠΈ случаи ΠΊΠΎΠ³Π΄Π° Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ getApplicationContext?

Π’Π΅ΠΌΠ° (ΡΡ‚ΠΈΠ»ΡŒ) всСго прилоТСния ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ (для Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ Π² манифСстС ΡƒΠΊΠ°Π·Π°Π½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡΡ‚ΠΈΠ»ΡŒ). Π’ΠΎΠ³Π΄Π° запрос контСкста прилоТСния ΠΈ контСкста Π°ΠΊΡ‚ΠΈΠ²Ρ‚ΠΈ Π²Π΅Ρ€Π½Π΅Ρ‚ Ρ€Π°Π·Π½ΠΎΠ΅ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ View

ΠŸΠΎΡ‡Π΅ΠΌΡƒ контСкст Π½ΡƒΠΆΠ΅Π½ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ происходит Ρ€Π°Π±ΠΎΡ‚Π° с интСрфСйсом?

ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ содСрТит ΡΡ‚ΠΈΠ»ΡŒ для View

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ отличия Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ, Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΌ всСму ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ, Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ контСксту прилоТСния ΠΈΠ»ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΌΠ½Π΅ Ρ‚Π°ΠΊΠΈΠ΅ отличия (ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚Π΅ΠΌ ΠΈ стилСй) ΠΏΡ€ΠΈΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ.

контСкст прилоТСния слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ контСкст Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° (Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΆΠΈΡ‚ΡŒ дольшС, Ρ‡Π΅ΠΌ создавшая/Π²Ρ‹Π·Π²Π°Π²ΡˆΠ°Ρ ΠΈΡ… Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€) Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠΈ удСрТания ссылки Π½Π° этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΡ€ΠΈ использовании Π΅Π³ΠΎ собствСнного контСкста ΠΈ ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти.

Π²ΠΎ внСшниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ слСдуСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ контСкст прилоТСния ΠΏΠΎ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏ.1

контСкст прилоТСния Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ особСнностям GUI ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ, Ссли ΠΎΠ½ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² всСго прилоТСния, Π² Ρ‚Π°ΠΊΠΈΡ… случаях нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ контСкст прилоТСния ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с GUI этой Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ‚ΠΈ.

ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (класс Application ) β€” синглтон ΠΈ Π΅Π³ΠΎ контСкст Ρ‚ΠΎΠΆΠ΅ синглтон, этот контСкст ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΈ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ°ΠΌ памяти, Ссли Π½Π΅ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ ΠΈΡ… ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ GC

РусскиС Π‘Π»ΠΎΠ³ΠΈ

ПониманиС ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ контСкста Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΠΎΠ΄ Android

Когда Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ контСкста, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с Android, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«XXXXActivity.thisΒ», Β«getApplicationContext ()Β», Β«getContext ()Β» ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ. Π₯отя всС это Π·Π½Π°ΡŽΡ‚, это Ρ‚Π°ΠΊΠΆΠ΅ искусство β€” Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

РаньшС Π² наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π»Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ​​функция ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΡˆΠ°Ρ€Π° для получСния WINDOW_SERVICE глобального прилоТСния. Однако экзСмпляр ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΡˆΠ°Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ контСкст Activity. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ контСкст ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ использовании памяти, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ windowManager Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌ. Π­Ρ‚ΠΎΡ‚ Π²ΠΈΠ΄.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ Ρ€Π΅Π·ΡŽΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Context.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚, Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ с китайского ΠΊΠ°ΠΊ «контСкст», описываСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ срСдС прилоТСния, которая описываСтся Π² SDK ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receiving intents, etc

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния систСмы Android: ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ β€” это сцСна, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ процСсс взаимодСйствия с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π°ΠΊΠΈΡ… опСрациях, ΠΊΠ°ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° рСсурсов, запуск Activity, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ систСмных слуТб ΠΈ созданиС прСдставлСний.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: контСкст β€” это абстрактный класс, Π° дСйствиС, слуТба, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ‚. Π”. β€” всС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этого класса.

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚, Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ Π² ΠΊΠΎΠ΄Π΅, прСдставляСт собой абстрактный класс, Π΅Π³ΠΎ основноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ списка повСдСния выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘ΠΏΠ΅ΠΊΡ‚Ρ€ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ контСкста

ГСнСалогия Context Π² основном Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Context, ContextImpl, ContextWrapper, ContextThemeWrapper ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹ Application, Activity, Service.

ΠžΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ этими элСмСнтами ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ рисункС:
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄

Из Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹ наслСдования ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ класс Application, класс Service ΠΈ класс Activity Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ класс Context. ПослС запуска прилоТСния для прилоТСния Π±ΡƒΠ΄Π΅Ρ‚ создан Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Application Context. Класс ContextImpl β€” это Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ рСализация Context. Класс ContextWrapper β€” это класс-ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° для Context. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π΅ измСняя ContextImpl. MBase Π² ContextWrapper Π½Π° самом Π΄Π΅Π»Π΅ являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ContextImpl. MOuterContext Π² классС ContextImpl являСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ контСкста, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ дСйствиС, слуТбу ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π­Ρ‚ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡƒΡ‚Π°Π½ΠΎ? Π­Ρ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ этих участников.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² родствСнный класс

Context

ΠŸΡƒΡ‚ΡŒ: /frameworks/base/core/java/android/content/Context.java
ОписаниС: абстрактный класс, прСдоставляСт Π½Π°Π±ΠΎΡ€ ΠΎΠ±Ρ‰ΠΈΡ… API.

ContextIml

ΠŸΡƒΡ‚ΡŒ: /frameworks/base/core/java/android/app/ContextImpl.java
ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Класс Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса Context β€” это ContextIml, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ класса Context. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ, ΠΈ Π΅Π΅ свойство mPackageInfo Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ, ΠΎ Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅.

ContextWrapper

ΠŸΡƒΡ‚ΡŒ: \ frameworks \ base \ core \ java \ android \ content \ ContextWrapper.java
ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΊΠ°ΠΊ ΠΈ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, этот класс являСтся просто ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ для класса Context.ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ этого класса содСрТит Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ ссылку Π½Π° контСкст, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ContextImpl.

ContextThemeWrapper

ΠŸΡƒΡ‚ΡŒ: /frameworks/base/core/java/android/view/ContextThemeWrapper.java
ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎΡ‚ класс содСрТит связанныС с Ρ‚Π΅ΠΌΠΎΠΉ (Theme) интСрфСйсы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ android: theme. Π’Π΅ΠΌΠ° Π½ΡƒΠΆΠ½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Activity, Π° Service Π½Π΅ Π½ΡƒΠΆΠ½Π° Ρ‚Π΅ΠΌΠ°, поэтому Service Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ наслСдуСтся ΠΎΡ‚ класса ContextWrapper.

ВрСмя создания контСкста

ПослС знакомства с ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ наслСдования контСкста ΠΌΡ‹ Π·Π°Ρ‚Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ контСкста.

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ контСкста

БущСствуСт нСсколько ситуаций, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ создаСт экзСмпляр Context:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° количСства контСкстов, совмСстно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:
ΠžΠ±Ρ‰Π΅Π΅ количСство экзСмпляров контСкста = 1 (экзСмпляр контСкста, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ) + количСство дСйствий + количСство услуг

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ врСмя создания

Когда ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Application

Когда ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ запускаСтся Π² ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·, ΠΎΠ½ΠΎ сначала создаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Application. Если для прилоТСния ясно, Ρ‡Ρ‚ΠΎ ΠΎΠ½ запускаСт процСсс Activity (startActivity), врСмя для создания прилоТСния β€” это ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ handleBindApplication (), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² классС ActivityThread.java, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

Когда ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Activity

ΠŸΡ€ΠΈ запросС запуска Activity Ρ‡Π΅Ρ€Π΅Π· startActivity () ΠΈΠ»ΠΈ startActivityForResult (), Ссли систСма ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Activity, ΠΎΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ handleLaunchActivity (), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ performLaunchActivity () для создания экзСмпляра Activity ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° onCreate. (), onStart () ΠΈ Ρ‚. Π΄., Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ располоТСны Π² классС ActivityThread.java ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Когда ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ слуТбы

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ startService ΠΈΠ»ΠΈ bindService, Ссли систСма ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр слуТбы, ΠΎΠ½Π° Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ handleCreateService ().
Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ связанных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Ѐункция handleCreateService () находится Π² классС ActivityThread.java ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Heavyweight PackageInfo

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ, анализируя ContextImp, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² нСпосрСдствСнном Π²Ρ‹Π·ΠΎΠ²Π΅ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° mPackageInfo (класс Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°
Ρ‚ΠΈΠΏ PackageInfo). Π­Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ContextImp β€” это Π»Π΅Π³ΠΊΠΈΠΉ класс, Π° PackageInfo β€” настоящий тяТСлый класс. И всС экзСмпляры ContextIml Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ packageInfo.

ΠœΠ΅Ρ‚ΠΎΠ΄ контСкста getSharedPreferences ()

Π’ΠΎΡ‚ Π°Π½Π°Π»ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Context для получСния класса SharedPreferences. Класс SharedPreferences Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ всСми. ΠžΠ±Ρ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ получСния
ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для получСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° SharedPreferences Π½Π° основС связанной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° getSharedPreferences (). ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ процСсс выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

1. Π’Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ getSharedPreferences (), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ». Ѐункция этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

2. SharedPreferences β€” это просто интСрфСйс, ΠΎΠ½ опрСдСляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для управлСния xml-Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ класс Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ β€” SharedPreferencesImpl, этот класс являСтся Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ классом ContextIml, это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ класс:

ИспользованиС контСкста

Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ контСкст

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΈ использования контСкста

Π”Π°Π²Π°ΠΉΡ‚Π΅ сначала посмотрим Π½Π° схСму сцСны использования контСкста:
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄

ВсС ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ числа Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊ НЕВ. На самом Π΄Π΅Π»Π΅ это ДА с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния способностСй, Π½ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ НЕВ? Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ ΠΎΠ΄Π½ΠΎ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ:

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ContentProvider ΠΈ BroadcastReceiver находятся Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ сущСствуСт контСкст для использования Π² ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ….

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ смотрим Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚Π°Ρ‡ΠΈΠ²Π°ΡΡΡŒ Π½Π° Activity ΠΈ Application, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, связанныС с UI, Π² основном Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ, ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ практичСски Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π² Application. ЀактичСски, ΠΏΠΎΠΊΠ° Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅ ΠΎΠ΄Π½Ρƒ Ρ‚ΠΎΡ‡ΠΊΡƒ, всС связанныС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ интСрфСйсом Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Activity ΠΊΠ°ΠΊ Context для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ; Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Service, Activity, Application ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ экзСмпляры Π² порядкС, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ ссылками Context, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π£Ρ‚Π΅Ρ‡ΠΊΠ° памяти.

Если я, проводящий собСсСдованиС, ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽ вас, ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ Π‘Π»ΡƒΠΆΠ±Π° Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π½Π° это ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ.

Π£Ρ‚Π΅Ρ‡ΠΊΠ° памяти, вызванная контСкстом

Π£Ρ‚Π΅Ρ‡ΠΊΠ° памяти, вызванная Context, Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡƒΠ³Π°Π΅Ρ‚. Π’ΠΎΡ‚ Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

1. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ одноэлСмСнтный шаблон

Π’ этом случаС, Π΄Π°ΠΆΠ΅ Ссли дСйствиС ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π³ΠΎ ссылка всС Π΅Ρ‰Π΅ сущСствуСт Π² синглтонС, Π΅Π³ΠΎ нСльзя ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ.

2. View содСрТит ссылку Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ

БущСствуСт статичСский ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Drawable.Когда ImageView устанавливаСт этот Drawable, ImageView сохраняСт ссылку Π½Π° mDrawable, Π° this, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ ImageView, являСтся mContext для MainActivity, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ mDrawable, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ static, находится Π² памяти, MainActivity являСтся Π΅Π³ΠΎ косвСнной ссылкой. Когда MainActivity уничтоТаСтся, GC Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΡ‚Π΅Ρ‡ΠΊΡƒ памяти.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ стараСмся ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список

— разбираСмся Π² ΠΊΠΎΠ΄Π΅ ΡƒΡ€ΠΎΠΊΠ° 21
— тСория ΠΏΠΎ Intent ΠΈ Intent Filter
— Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ Context

На ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅ (β„– 21) ΠΌΡ‹ создали ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ содСрТит Π΄Π²Π° Activity. Напомню, Ρ‡Ρ‚ΠΎ для создания Activity, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ:
ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс, с супСрклассом android.app.Activity
ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Activity-запись Π² манифСстС ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅ΠΉ созданный класс Π² ΠΏΠΎΠ»Π΅ Name

НадСюсь ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ ΡƒΡ€ΠΎΠΊ Π½Π΅ Π²Ρ‹Π·Π²Π°Π» особых трудностСй ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° создания Activity ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡƒΠ»ΠΎΠΆΠΈΠ»Π°ΡΡŒ Π² Π³ΠΎΠ»ΠΎΠ²Π΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ Π²Ρ‹Π·ΠΎΠ²Π° Activity.

ΠœΡ‹ использовали ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Intent. О Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь, здСсь ΠΈ здСсь. ΠŸΡ€Π°Π²Π΄Π° ΠΈΠ½Ρ„Π° достаточно слоТна для понимания с нуля. Π― ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ своими словами ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Intent

Π’ нашСм случаС Intent – это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ прописываСм, ΠΊΠ°ΠΊΠΎΠ΅ Activity Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ. ПослС Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ этот Intent-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ startActivity, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Activity ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ. ΠŸΡ€ΠΈ создании Intent ΠΌΡ‹ использовали конструктор Intent (Context packageContext, Class cls) с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ – это Context. Если ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ создавали View Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… ΡƒΡ€ΠΎΠΊΠΎΠ², ΠΌΡ‹ Ρ‚ΠΎΠΆΠ΅ использовали Π² конструкторах ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Context. Activity являСтся подклассом Context, поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ – this. Π’ΠΊΡ€Π°Ρ‚Ρ†Π΅, Context – это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт доступ ΠΊ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ функциям прилоТСния Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ: доступ ΠΊ рСсурсам, ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС, Π²Ρ‹Π·ΠΎΠ² Activiy ΠΈ Ρ‚.Π΄. Π― Π΄ΡƒΠΌΠ°ΡŽ, Π² дальнСйшСм ΠΌΡ‹ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Π³Π΄Π΅ явно ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Π·Π°Ρ‡Π΅ΠΌ Context пСрСдаСтся ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ – имя класса. Напомню, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ создании записи Activity Π² манифСст-Ρ„Π°ΠΉΠ»Π΅ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ имя класса. И Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ссли ΠΌΡ‹ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ Ρ‚ΠΎΡ‚ ΠΆΠ΅ класс Π² Intent – Ρ‚ΠΎ систСма, просмотрСв манифСст-Ρ„Π°ΠΉΠ» ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ соотвСтствиС ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Activity.

Π’ этом ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ. ΠœΡ‹ ΡƒΠ΄Π°Π»ΠΈΠΌ запись ΠΎΠ± Activity ΠΈΠ· манифСст-Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΅Π³ΠΎ послС этого Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈΠ· ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ ΡƒΡ€ΠΎΠΊΠ° P0211_TwoActivity, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ манифСст-Ρ„Π°ΠΉΠ», Π²ΠΊΠ»Π°Π΄ΠΊΠ° Application ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ запись ΠΎΠ± ActivityTwo с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ Remove. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ всС, запуститС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Activity ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ β€œGo to Activity Two”. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ. Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ, Ρ‚ΠΎ Π²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ тСкст:

ERROR/AndroidRuntime(367): android.content.ActivityNotFoundException: Unable to find explicit activity class ; have you declared this activity in your AndroidManifest.xml?

БистСма Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ нашла Ρ‚Π°ΠΊΠΎΠ³ΠΎ Activity класса ΠΈ любСзно подсказываСт, Ρ‡Ρ‚ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΠ½ Π½Π΅ прописан Π² манифСст-Ρ„Π°ΠΉΠ»Π΅. Π‘Π½ΠΎΠ²Π° ΠΏΡ€ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ Activity Π² манифСст-Ρ„Π°ΠΉΠ»Π΅, всС сохранитС ΠΈ запускайтС. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π―Π²Π½Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ²

Π’Ρ‹Π·ΠΎΠ² Activity с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Intent – это явный Π²Ρ‹Π·ΠΎΠ². Π’.Π΅. с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ класса ΠΌΡ‹ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΠ°ΠΊΠΎΠ΅ Activity Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ. Π­Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ прилоТСния. Π‘Ρ…Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ это ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ создаСм Intent, Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΅ΠΌΡƒ класс Class_B. Π”Π°Π»Π΅Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ startActivity с созданным Intent Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. ΠœΠ΅Ρ‚ΠΎΠ΄ провСряСт AndroidManifest Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Activity связанной с классом Class_B ΠΈ Ссли Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚, Ρ‚ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚. ВсС это Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ прилоТСния.

НСявный Π²Ρ‹Π·ΠΎΠ²

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ контСкст Π² Π°Π½Π΄Ρ€ΠΎΠΈΠ΄

Π’ Application_1 создаСтся Intent, Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ action, data, category. Для удобства, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½Π°Π·ΠΎΠ²Π΅ΠΌ Param_C. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ startActivity этот Intent отправляСтся Π½Π° поиски подходящСй Activity, которая смоТСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ (Ρ‚.Π΅. Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Param_C). Π’ систСмС Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ прилоТСния, ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ… нСсколько Activity. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Activity ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Intent Filter (Π½Π°Π±ΠΎΡ€Ρ‹ Param_A, Param_B ΠΈ Ρ‚.Π΄.), для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚. ΠœΠ΅Ρ‚ΠΎΠ΄ startActivity свСряСт Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Intent ΠΈ Π½Π°Π±ΠΎΡ€Ρ‹ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Intent Filter для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Activity. Если Π½Π°Π±ΠΎΡ€Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚ (Param_C для ΠΎΠ±ΠΎΠΈΡ…), Ρ‚ΠΎ Activity считаСтся подходящСй.

Если Π² ΠΈΡ‚ΠΎΠ³Π΅ нашлась Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Activity – ΠΎΠ½Π° ΠΈ отобраТаСтся. Если ΠΆΠ΅ нашлось нСсколько подходящих Activity, Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ выводится список, Π³Π΄Π΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ сам Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

НапримСр, Ссли Π² систСмС установлСно нСсколько ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ»Π΅Π΅Ρ€ΠΎΠ², ΠΈ Π²Ρ‹ запускаСтС mp3, Ρ‚ΠΎ систСма Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π²Π°ΠΌ список Activity, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΌΠ΅ΡŽΡ‚ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ ΠΌΡƒΠ·Ρ‹ΠΊΡƒ ΠΈ попросит Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. А Ρ‚Π΅ Activity, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΌΠ΅ΡŽΡ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ‚ΡŒ тСкст, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ, Π·Π²ΠΎΠ½ΠΈΡ‚ΡŒ ΠΈ Ρ‚.ΠΏ. Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.

Если для Activity Π½Π΅ Π·Π°Π΄Π°Π½ Intent Filter (Activity_24 Π½Π° схСмС), Ρ‚ΠΎ Intent с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π΅ΠΌΡƒ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚, ΠΈ ΠΎΠ½ΠΎ Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ.

Ну Π²ΠΎΡ‚, Ρ…ΠΎΡ‚Π΅Π» Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€Ρƒ Π²Π²ΠΎΠ΄Π½Ρ‹Ρ… слов, Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ достаточно ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС со схСмами ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ) НадСюсь, Ρ‡Ρ‚ΠΎ Ρƒ мСня ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ донСсти смысл Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Intent-ΠΎΠ². Π’ дальнСйшСм Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π·Π°ΠΊΡ€Π΅ΠΏΠΈΠΌ Ρ‚Π΅ΠΌΡƒ.

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅:

— Activity LifeCycle – ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Activity ΠΏΡ€ΠΈ создании, Π²Ρ‹Π·ΠΎΠ²Π΅, Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Π½Π°ΠΌ Π² Telegram:

— Π² ΠΊΠ°Π½Π°Π»Π΅ StartAndroid ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΡŽΡ‚ΡΡ ссылки Π½Π° Π½ΠΎΠ²Ρ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ с сайта startandroid.ru ΠΈ интСрСсныС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ с Ρ…Π°Π±Ρ€Π°, medium.com ΠΈ Ρ‚.ΠΏ.

— Π² Ρ‡Π°Ρ‚Π°Ρ… Ρ€Π΅ΡˆΠ°Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ вопросы ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌ Ρ‚Π΅ΠΌΠ°ΠΌ: Android, Kotlin, RxJava, Dagger, ВСстированиС

— Π½Ρƒ ΠΈ Ссли просто хочСтся ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‡Π°Ρ‚ Π€Π»ΡƒΠ΄ΠΈΠ»ΡŒΠ½Ρ

— Π½ΠΎΠ²Ρ‹ΠΉ Ρ‡Π°Ρ‚ Performance для обсуТдСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ для Π²Π°ΡˆΠΈΡ… ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΠΉ ΠΏΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡŽ курса ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *