Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android

ИспользованиС Broadcast Receiver Π½Π° наглядном ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅

Broadcast Receivers – ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² прилоТСния для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы Android. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ попытаСмся нагляднСС ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Β«Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ с Ρ‡Π΅ΠΌ Π΅Π³ΠΎ Сдят», написав ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ состояниС соСдинСния посрСдством Wi-Fi ΠΈ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡŽΡ‰Π΅Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎ Π»ΡŽΠ±Ρ‹Ρ… Π΅Π³ΠΎ измСнСниях.

Π‘ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Broadcast receivers, ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Android-прилоТСния ΠΌΡ‹ ΡƒΠΆΠ΅ ознакомились Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π΅. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅ΠΌ ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ с практичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ создаСм Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ принимаСмся Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android

Π’Π½Π°Ρ‡Π°Π»Π΅ описываСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² AndroidManifest.xml. Нам Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Broadcast receiver для слСТСния Π·Π° состояниСм Wi-Fi соСдинСния, ΠΈ Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΡ€Π°Π²Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ состоянии этого соСдинСния. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Activity ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ опишСм, Π½ΠΎ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Π§Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ получится Π² AndroidManifest.xml:

Π’ Ρ†Π΅Π»ΠΎΠΌ основная Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сдСлана. Π”Π°ΠΆΠ΅ Π±Π΅Π· запуска прилоТСния Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π½Π°ΠΌ Broadcast receiver Π±ΡƒΠ΄Π΅Ρ‚ Π² систСмС, ΠΈ ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Wi-Fi появится ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android

Π’Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ собствСнно ΠΌΡ‹ сдСлали. Π’ΠΎΡ‚ Ρ‚Π°ΠΊ задаСтся Broadcast receiver Π² «манифСстС» (AndroidManifest.xml):

ΠšΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Broadcast receivers Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ своё имя (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ android:name=Β».WiFiStatusReceiverΒ»). Π£ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ имя Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ классу, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΠ²ΡˆΠΈΠ΅ Intents ΠΎΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Broadcast receiver.

Π’ Ρ‚Π΅Π³Π°Ρ… Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ для событий. Если событиС соотвСтствуСт Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°ΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ условиям, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅Π³Π°ΠΌΠΈ, запускаСтся класс-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ классу WiFiStatusReceiver.java. НуТно ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ классы java Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ класса BroadcastReceiver. Π”Π°Π»Π΅Π΅ примСняСм вСсьма ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ систСмный класс WiFiManager для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ состояниС Wi-Fi соСдинСния ΠΈ сравниваСм ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с константами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Wi-Fi. Если константы ΠΈ состояния ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ выводится сообщСниС. Для Π²Ρ‹Π²ΠΎΠ΄Π° сообщСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Toast-увСдомлСния (Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹Π΅ надписи).

Π’ΠΎΡ‚ ΠΌΡ‹ ΠΈ создали наглядный ΠΈ достаточно простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Broadcast receivers. БохраняСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ запускаСм Π΅Π³ΠΎ Π½Π° Android-устройствС ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· эмулятор ΠΈ радуСмся ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅.

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

Broadcast (Π¨ΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сообщСния)

Π’ Android сущСствуСт понятиС ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сообщСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ. Оба процСсса ΠΌΠ΅ΠΆΠ΄Ρƒ собой Π½Π΅ связаны ΠΈ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° сообщСний

Для Π½Π°Ρ‡Π°Π»Π° научимся ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сообщСния. Π’ ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΡƒΡ€ΠΎΠΊΠΎΠ² ΠΌΡ‹ ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ намСрСния Intent. Но намСрСния ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ сообщСний, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ Π½Π΅ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ, Π° всСм. И любая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, оборудованная ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠΎΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΉΠΌΠ°Ρ‚ΡŒ это сообщСниС ΠΈ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ свои шаги Π½Π° основС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π›ΡŽΠ±ΠΎΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π΄ΠΈΠΎΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ это сообщСниС. Π’Π°ΠΊ ΠΆΠ΅ ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‚ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Они обзаводятся ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°ΡŽΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ сообщСний.

БообщСния ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ сама систСма, Π° Ρ‚Π°ΠΊΠΆΠ΅ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈ Ρ‡ΡƒΠΆΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° сообщСний вСсьма проста Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сообщСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ. УстановитС ΠΏΡ€ΠΈ нСобходимости поля action, data ΠΈ category (дСйствиС, Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ) вашСго сообщСния ΠΈ ΠΏΡƒΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ°ΠΌ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сообщСний Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ «ΡΠ²ΠΎΡ‘» сообщСниС. Π’ этом сообщСнии строка дСйствия ACTION Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ΅ дСйствиС. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях ΡΠΎΠ·Π΄Π°ΡŽΡ‚ строку-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ дСйствия ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ имСнования ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Java. НапримСр, для обнаруТСния ΠΊΠΎΡ‚Π° Π² большом Π·Π΄Π°Π½ΠΈΠΈ:

Π”Π°Π»Π΅Π΅ Π²Ρ‹ создаётС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Intent, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚Π΅ Π² Π½Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ sendBroadcast(), ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π΅ΠΌΡƒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° созданный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Intent. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² extras ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ для обнаруТСния ΠΊΠΎΡ‚Π°:

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ строкой, ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ (имя ΠΊΠΎΡ‚Π° ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹), ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ сообщСниС. Π”Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, связанноС с ΠΊΠ°Ρ€Ρ‚Π°ΠΌΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ сообщСниС ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠΎΡ‚Π° Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ родствСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ sendStickyBroadcast() ΠΈ sendOrderedBroadcast().

Для старых устройств этого Π±Ρ‹Π»ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ достаточно, Π½ΠΎ начиная с Android 3.0, Π² цСлях бСзопасности сообщСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ остановлСнными прилоТСниями, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π½Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Π»ΠΈΡΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ слСдуСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π»Π°Π³, Ρ€Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΉ запуск активности.

ΠœΡ‹ напишСм простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сообщСния ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ создадим ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ для Π΅Π³ΠΎ получСния. О ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ΅ ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ части ΡƒΡ€ΠΎΠΊΠ°. А ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ прСдставлСниС ΠΎ Π½Ρ‘ΠΌ.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ размСститС Π½Π° экранС ΠΊΠ½ΠΎΠΏΠΊΡƒ с надписью «ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сообщСниС». ΠŸΡ€ΠΈΡΠ²ΠΎΠΉΡ‚Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ onClick Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ происходит ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ сообщСния.

Запустив ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сообщСниС. Волько вашС сообщСниС ΡƒΠΉΠ΄Ρ‘Ρ‚ Π² Π½ΠΈΠΊΡƒΠ΄Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½ΠΈ ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΎ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠΎΠΌ для Π½Π΅Π³ΠΎ. Π˜ΡΠΏΡ€Π°Π²ΠΈΠΌ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ ΠΈ создадим ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ Π² своём ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ сами ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ свои ΠΆΠ΅ сообщСния.

ΠŸΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ прСдставляСт собой ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Java-класс Π½Π° основС BroadcastReceiver. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ класс ΠΈ Π½Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. РаньшС Ρ‚Π°ΠΊ ΠΈ поступали. Но Π² студии Π΅ΡΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ шаблон, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя.

Π©Ρ‘Π»ΠΊΠ°Π΅ΠΌ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ New | Other | Broadcast Receiver

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android

Π’ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π·Π°Π΄Π°Ρ‘ΠΌ имя ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ°, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ настройки оставляСм Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android

Бтудия создаст измСнСния Π² Π΄Π²ΡƒΡ… мСстах. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π±ΡƒΠ΄Π΅Ρ‚ создан класс MessageReceiver:

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π² манифСстС Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Π±Π»ΠΎΠΊ.

Π’ Π½Π΅Π³ΠΎ слСдуСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΎΠ²ΠΈΡ‚ΡŒ сообщСния.

ВСрнёмся Π² класс ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ° ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ onReceive().

Π‘Π½ΠΎΠ²Π° запустим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈ Π΅Ρ‰Ρ‘ Ρ€Π°Π· ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠΌ сообщСниС. Π’Π°ΠΊ ΠΊΠ°ΠΊ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ, Π½ΠΎ ΠΈ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠΎΠΌ, Ρ‚ΠΎ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠ»ΠΎΠ²ΠΈΡ‚ΡŒ сообщСниС ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π°ΠΌ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ посылало сообщСниС, Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π»ΠΎ.

ΠŸΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сообщСний

Π’ΠΎΡ‚ ΠΏΠ»Π°Π²Π½ΠΎ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ ΠΊ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ°ΠΌ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сообщСний. На самом Π΄Π΅Π»Π΅ Π²Π°ΠΌ Π½Π΅ Ρ‚Π°ΠΊ часто придётся Ρ€Π°ΡΡΡ‹Π»Π°Ρ‚ΡŒ сообщСния, Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ‡Π°Ρ‰Π΅ встрСчаСтся ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ сообщСния. Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, сообщСния ΠΎΡ‚ систСмы. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ‚Π°ΠΊΠΈΡ… сообщСний ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ:

ΠŸΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ, созданный ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ вашСго прилоТСния Π°ΠΊΡ‚ΠΈΠ²Π½Π°. Казалось, это являСтся нСдостатком ΠΈ Π½Π΅Ρ‚ смысла ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Но всё Π½Π΅ Ρ‚Π°ΠΊ просто. НСкоторыС систСмныС сообщСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ°ΠΌΠΈ, созданными ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ. И Π² этом Π΅ΡΡ‚ΡŒ свой Ρ€Π΅Π·ΠΎΠ½. НапримСр, Ссли вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ, Π΅ΠΌΡƒ Π½Π΅Ρ‚ смысла ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ сообщСния ΠΎ зарядС Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ. Π˜Π½Π°Ρ‡Π΅ заряд Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡ…ΠΎΠ΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΅Ρ‰Ρ‘ быстрСС ΠΏΡ€ΠΈ лишнСй бСсполСзной Ρ€Π°Π±ΠΎΡ‚Π΅. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ зарядС Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Π² этом Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΡΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ, ΠΊΠ°ΠΊΠΎΠΉ Π²ΠΈΠ΄ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ° слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ рСгистрации ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ½ΡΡ‚ΡŒ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ, ΠΊΠΎΠ³Π΄Π° большС Π½Π΅ нуТдаСмся Π² Π½Ρ‘ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° unregisterBroadcastReceiver().

ΠŸΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ срабатываниС ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ пСриодичСского срабатывания ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ систСмного намСрСния android.intent.action.TIME_TICK. ΠŸΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ Π±ΡƒΠ΄Π΅Ρ‚ создан ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π° экран активности Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ для рСгистрации ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ рСгистрации ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ сообщСния.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π½ΠΎΠ²Ρ‹ΠΉ класс TimeBroadcastReceiver, Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ BroadcastReceiver:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ° ΠΈ Ρ‡Π΅Ρ€Π΅Π· шаблон, ΠΊΠ°ΠΊ ΠΌΡ‹ это сдСлали Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Но Π² этом случаС ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ запись ΠΎ Π½Ρ‘ΠΌ Π² манифСстС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°ΠΌ ΠΎΠ½ Π½Π΅ понадобится. Но Ссли Π²Ρ‹ Π·Π°Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ ΡΡ‚Ρ€Π°ΡˆΠ½ΠΎΠ³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π°ΠΌ Π½Π΅ прописаны Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹.

ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄ Π³Π»Π°Π²Π½ΠΎΠΉ активности ΠΈ зарСгистрируСм (Π° Ρ‚Π°ΠΊΠΆΠ΅ снимСм Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ) ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ:

ЗапускаСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ Π½Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ рассылку ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ сообщСния. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ запуск Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ сообщСния с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. Π”Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ всё Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ сообщСния.

Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ слСдуСт Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ. Π― Π²ΠΈΠ΄Π΅Π» часто Π½Π° Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ… вопросы, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄Π°Π½Π½ΠΎΠ΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ android.intent.action.TIME_TICK. А Π½Π΅ Π½Π°Π΄ΠΎ Π±Ρ‹Π»ΠΎ Π΅Π³ΠΎ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² манифСстС.

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ устанавливали ΠΈ снимали Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· наТатия ΠΊΠ½ΠΎΠΏΠΎΠΊ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ onResume(), Π° ΡΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ onPause().

НСобходимо ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ программная рСгистрация ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ сообщСния создаётся Π² основном ΠΏΠΎΡ‚ΠΎΠΊΠ΅ прилоТСния ΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ источником ошибок, Ссли ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² BroadcastReceiver Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя. Как Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ сСрвисы. ΠŸΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π½Π° эту Ρ‚Π΅ΠΌΡƒ ΡΡ‚Π°Ρ‚ΡŒΡŽ (en).

TIME_TICK Π½Π° Kotlin

НапишСм ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° Kotlin. РазмСститС Π½Π° экранС TextView, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ врСмя. Код для активности Π½ΠΈΠΆΠ΅. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ создаём ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс для BroadcastReceiver, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π² onResume() ΠΈ снимаСм Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π² onPause().

Автостарт Activity ΠΈΠ»ΠΈ Service ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ (ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅) дСвайса

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ прилоТСниями.

Если вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (сСрвис) Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ сразу послС ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ устройства, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ android.intent.action.BOOT_COMPLETED:

ΠœΡ‹ создали ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ сообщСния. Π’Π°ΠΊΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ Π² манифСстС.

Π‘Π»Π΅Π΄ΠΈΠΌ Π·Π° ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ΠΌ

НСт, Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ Π½Π΅ ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ ΠΏΠΈΡ‚Π°Π½ΠΈΠΈ ΠΊΠΎΡ‚Π°. Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Π² Π²ΠΈΠ΄Ρƒ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ ΠΎΡ‚ элСктричСства. Если вашС устройство ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚ зарядки, Ρ‚ΠΎ систСма ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°Π΅Ρ‚ ΠΎΠ± этом событии Ρ‡Π΅Ρ€Π΅Π· ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ android.intent.action.ACTION_POWER_DISCONNECTED.

НС станСм Π·Π°Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ, Π° ΠΎΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ манифСст ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΊ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΡƒ сообщСний ΠΎΡ‚ радистки ΠšΡΡ‚.

А Π² классС MessageReceiver Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ΄ для ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ устройствС. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ устройство ΠΊ ΠΏΠΈΡ‚Π°Π½ΠΈΡŽ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹Π΄Π΅Ρ€Π½ΠΈΡ‚Π΅ кабСль. На экранС появится сообщСниС.

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

Π­Ρ‚ΠΈ Π·Π°Π±Π°Π²Π½Ρ‹Π΅ BroadcastReceiver’Ρ‹

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver androidНСбольшоС наблюдСниС ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΌ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ BroadcastReceiver ‘ΠΎΠ² ΠΏΡ€ΠΈ рСгистрации Ρ‡Π΅Ρ€Π΅Π· AndroidManifest.xml ΠΈ нСпосрСдствСнно Π² ΠΊΠΎΠ΄Π΅. Данная Π·Π°ΠΌΠ΅Ρ‚ΠΊΠ° Π½Π΅ являСтся ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΌ руководством для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ², Π° всСго лишь ΠΏΡ€ΠΈΠ·Π²Π°Π½Π° ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ врСмя Ρ‚Π΅ΠΌ, ΠΊΠΎΠΌΡƒ Π΅Ρ‰Π΅ Π½Π΅ довСлось Π½Π°ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ Π½Π° ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π³Ρ€Π°Π±Π»ΠΈ.

Π’Π°ΠΊ ΡƒΠΆ Π²Ρ‹ΡˆΠ»ΠΎ, волСю project manager ΡΡƒΠ΄ΡŒΠ±Ρ‹, довСлось ΠΌΠ½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π±Π»ΠΎΠΊΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ всС ΠΈ вся Π²ΠΎ Π±Π»Π°Π³ΠΎ Π±Π΅Π·Π·Π°Ρ‰ΠΈΡ‚Π½Ρ‹Ρ… Π΄Π΅Ρ‚ΠΎΠΊ. ΠžΡΡ‚Π°Π²ΠΈΠΌ Π² сторонС ΡΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ вопроса ΠΈ ΠΏΡΠΈΡ…ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΊΠΈΠ΄Ρ‹Π²Π°ΡŽΡ‚ сотни Ρ‚Ρ€ΠΈ-Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π΅Π²Ρ€ΠΎ Π½Π° смартфон для дитяти, Π° ΠΏΠΎΡ‚ΠΎΠΌ с Π·Π°Π²ΠΈΠ΄Π½Ρ‹ΠΌ упорством ΠΈΡ‰ΡƒΡ‚ софт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ это высокотСхнологичноС устройство Π² ΠΊΠΈΡ€ΠΏΠΈΡ‡ дСсятилСтнСй давности: Π±Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°, Π±Π΅Π· смс, Π±Π΅Π· Π·Π²ΠΎΠ½ΠΊΠΎΠ², Π±Π΅Π· прилоТСний… Π±Π΅Π· Π½Π°Π΄Π΅ΠΆΠ΄Ρ‹ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ воспитаниС Ρ‚ΠΎΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ – Π²Π΅Ρ€Π½Ρ‹ΠΉ способ Π²Ρ‹Ρ€Π°ΡΡ‚ΠΈΡ‚ΡŒ бСзвольного ΠΈΠΌΠ±Π΅Ρ†ΠΈΠ»Π°, Π½ΠΎ Ρ‡ΡƒΠΊΡ‡Π° здСсь Π½Π΅ Ρ€Π΅ΡˆΠ°Ρ‚Π΅Π»ΡŒ, Ρ‡ΡƒΠΊΡ‡Π° ΠΊΠΎΠ΄ΠΎ-ΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° тСхничСской сторонС Π΄Π΅Π»Π°.

AndroidManifest.xml

Π‘ΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ классы выглядят Π½Π΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС ΠΈ Π² ΠΎΠ±Ρ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ:

Нас интСрСсуСт хронология Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², поэтому Π±ΡƒΠ΄Π΅ΠΌ вСсти Π»ΠΎΠ³ наступлСния основных событий.
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π»ΠΈΡ†ΠΎ Π² LogCat:

ApplicationTagText
com.habrMyActivityonCreate

ΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΠΊΠ»/Π²Ρ‹ΠΊΠ» ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΠ²ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΠΏΡ†ΠΈΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ:

ApplicationTagText
com.habrWiFiReceiveronReceive

ВсС довольно прСдсказуСмо.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π΅ΠΌ этот Π½Π΅Ρ…ΠΈΡ‚Ρ€Ρ‹ΠΉ Ρ‚Ρ€ΡŽΠΊ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Bluetooth.

ПовСдСниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ запускам ΠΈ Ρƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π² Π³ΠΎΠ»ΠΎΠ²Π΅ ΡƒΠΆΠ΅ навСрняка Π½Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΎΠ½Π΅ΡΠ»Π°ΡΡŒ ΠΌΡ‹ΡΠ»ΡŒ Β«Π·Π°Ρ‡Π΅ΠΌ, Ρ‚Π°ΠΊΠΈ, ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π°ΠΌ Π΄ΠΎΠΊΡ‚ΠΎΡ€Π° ΠΈ ΠΊΠΎΠ³ΠΎ ΠΎΠ½ здСсь Π²ΠΎΠΎΠ±Ρ‰Π΅ Π»Π΅Ρ‡ΠΈΡ‚?Β», Π½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² action Π½Π° WifiManager.WIFI_STATE_CHANGED_ACTION ΠΈΠ»ΠΈ ConnectivityManager.CONNECTIVITY_ACTION ΠΈ Ρ‚ΡƒΡ‚, ΠΏΡ€ΠΈΠ²Π΅Ρ‚ рСбятам ΠΈΠ· Π°Π½Π΄Ρ€ΠΎΠΈΠ΄, Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ LogCat ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ApplicationTagText
com.habrMyActivityonCreate
com.habrWiFiReceiveronReceive
com.habrDataReceiveronReceive

ЀактичСски, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ onReceive ΠΎΠ±ΠΎΠΈΡ… receiver‘ΠΎΠ² вызвался сразу, Π²ΠΎΠΎΠ±Ρ‰Π΅ Π²Π½Π΅ зависимости ΠΎΡ‚ состояния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ†ΠΈΠΉ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Bluetooth ΠΏΠΎΠ²Π΅Π» сСбя ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

Π’Ρ‹Π²ΠΎΠ΄

ВсС Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ воспроизводится Π½Π° всСх вСрсиях Android, начиная с Gingerbread ΠΈ Π²Ρ‹ΡˆΠ΅(Π½ΠΈΠΆΠ΅ просто Π½Π΅ тСстировал).

Π§Ρ‚ΠΎ касаСтся нСпосрСдствСнно ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ Π·Π²ΠΎΠ½ΠΊΠΎΠ², смс, ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π° ΠΈ Ρ‚.Π΄., Ρ‚ΠΎ, Ссли Π½Π΅ ошибаюсь, Ρ‚Π΅ΠΌΠ° ΡƒΠΆΠ΅ частично ΠΎΡΠ²Π΅Ρ‰Π°Π»Π°ΡΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ здСсь. Но, Ссли это интСрСсно, Ρ‚ΠΎ я ΠΌΠΎΠ³ Π±Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ внСсти свою Π»Π΅ΠΏΡ‚Ρƒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

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

Broadcast (Π¨ΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сообщСния)

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π¨ΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сообщСния Π΄Π΅Π»Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ; пСрСдавая события, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ сообщСния, Π²Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ своСго прилоТСния для сторонних ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈ сторонниС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ Π½Π° события Π±Π΅Π· нСобходимости ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ вашС ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ своём ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сообщСния Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ собствСнного (ΠΈΠ»ΠΈ стороннСго) прилоТСния ΠΈΠ»ΠΈ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° систСмныС измСнСния ΠΈ события ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π’Ρ‹ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сообщСний, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π·Π°Π²Π΅ΡΡ‚ΠΈΡΡŒ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ°ΠΌΠΈ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π°ΡˆΠΈΡ… сообщСний.

ΠŸΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сообщСний β€” это ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для получСния Π²Π½Π΅ΡˆΠ½ΠΈΡ… событий ΠΈ Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π½Π° Π½ΠΈΡ…. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠ³ΡƒΡ‚:

Π¨ΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сообщСния ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹:

Класс BroadcastReceiver являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ для класса, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСний, посылаСмых клиСнтским ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° sendBroadcast().

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ экзСмпляр класса BroadcastReceiver ΠΌΠΎΠΆΠ½ΠΎ динамичСски Π² ΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ статичСски Π² манифСстС.

Для статичСской рСгистрации Π² Ρ„Π°ΠΉΠ»Π΅ манифСста Π² сСкции application слСдуСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ΅ΠΊΡ†ΠΈΡŽ receiver ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ класс ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ°. Атрибут android:exported=»true» сообщаСт ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сообщСния Π²Π½Π΅ области прилоТСния. Π’Π½ΡƒΡ‚Ρ€ΠΈ сСкции указываСтся Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ Π² Π²ΠΈΠ΄Π΅ строки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ сообщСния ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚ΡŒ.

Если рСгистрация Π±Ρ‹Π»Π° сдСлана Ρ‡Π΅Ρ€Π΅Π· манифСст, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ обязано Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ срСагировал Π½Π° Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ намСрСния. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ запустится автоматичСски, ΠΊΠΎΠ³Π΄Π° подходящиС Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ транслировано. БистСма сама сканируСт содСрТимоС манифСста всСх ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π·Π° нас всю Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ рСсурсы. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния, способныС Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° события Π΄Π°ΠΆΠ΅ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ.

ДинамичСская рСгистрация происходит с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Context.registerReceiver().

ΠŸΠ΅Ρ€Π΅Π΄ этим создаётся класс, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠΉ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс BroadcastReceiver ΠΈ рСализуСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° onReceive() ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° событий.

ΠœΠ΅Ρ‚ΠΎΠ΄ onReceive() Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ намСрСния, Ссли ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ соотвСтствуСт Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρƒ. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ с зарСгистрированными ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ°ΠΌΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ автоматичСски ΠΏΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ намСрСния. ΠœΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ пяти сСкунд, ΠΈΠ½Π°Ρ‡Π΅ появится Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ.

Когда ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ сообщСниС ΠΏΡ€ΠΈΠ±Ρ‹Π²Π°Π΅Ρ‚ для получатСля сообщСния, Android Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ onReceive() ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ Π² Π½Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Intent, содСрТащий сообщСниС. ΠŸΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сообщСний являСтся Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ врСмя выполнСния этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. ΠŸΡ€ΠΎΡ†Π΅ΡΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² настоящСС врСмя выполняСт BroadcastReceiver, Ρ‚. Π΅. Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉΡΡ Π² настоящСС врСмя ΠΊΠΎΠ΄ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° onReceive(), ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ систСма, являСтся ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΌ процСссом ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ сохранён, ΠΊΡ€ΠΎΠΌΠ΅ случаСв критичСского нСдостатка памяти Π² систСмС.

Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° возвращаСтся ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° onReceive(), ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ становится Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΠΈ систСма ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° BroadcastReceiver Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π°. ΠŸΡ€ΠΎΡ†Π΅ΡΡ с Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»Π΅ΠΌ Π·Π°Ρ‰ΠΈΡ‰Ρ‘Π½ ΠΎΡ‚ уничтоТСния систСмой. Однако процСсс, содСрТащий Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ систСмой Π² любоС врСмя, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ потрСбляСт, Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π΄Ρ€ΡƒΠ³ΠΈΠΌ процСссам.

Π­Ρ‚ΠΎ прСдставляСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ сообщСниС Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ врСмя. Если ΠΌΠ΅Ρ‚ΠΎΠ΄ onReceive() ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ ΠΏΠΎΠ»Π½Ρ‹ΠΉ процСсс, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈ ΠΏΠΎΡ€ΠΎΠΆΠ΄Ρ‘Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ, систСма Android считаСт Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ (Ссли Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ прилоТСния Π½Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ Π² процСссС), ΠΈ считаСт этот процСсс ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠΌ Π½Π° ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π’ частности, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ ΠΈΠ»ΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ связываниС со слуТбой Π²Π½ΡƒΡ‚Ρ€ΠΈ экзСмпляра BroadcastReceiver. Для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ случая Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса NotificationManager. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Context.startService(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠ»Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для запуска слуТбы.

РСшСниС этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ссли Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ onReceive() ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ слуТбу вмСстС с BroadcastReceiver ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ слуТбС Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π·Π°Π΄Π°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ содСрТаниС процСсса Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ всСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ Π½Π΅ Ρ‡Π΅Ρ€Π΅Π· манифСст, Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ. ΠŸΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ, зарСгистрированный Ρ‚Π°ΠΊΠΈΠΌ способом, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠ΅ намСрСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚, выполняСтся Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обновлСния элСмСнтов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Π²Π½ΡƒΡ‚Ρ€ΠΈ активности, запуска слуТб ΠΈΠ»ΠΈ увСдомлСния Ρ‡Π΅Ρ€Π΅Π· NotificationManager. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ°, Ссли Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ Π½Π΅ отобраТаСтся Π½Π° экранС ΠΈΠ»ΠΈ находится Π² Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ состоянии.

Π’ ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ onResume()):

Для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ рСгистрации ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ unregisterReceiver() Π² контСкстС прилоТСния, пСрСдавая Π΅ΠΌΡƒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° экзСмпляр ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠ° (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ onPause()):

Для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° BroadcastReceiver Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… возмоТностСй Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈΠ»ΠΈ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ намСрСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ startActivity(). Аналогично, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ для запуска активности Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ BroadcastReceiver, Π²Ρ‹ Π½Π΅ смоТСтС Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ»ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΈ Π΄Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сСмантичСски ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ: запуск активности Ρ‡Π΅Ρ€Π΅Π· Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ являСтся ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ для систСмы, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰Π΅ΠΉ содСрТимоС экрана устройства, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π² настоящСС врСмя взаимодСйствуСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сообщСний для систСмы являСтся Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π·Π½Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈ которая, соотвСтствСнно, ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚.

ΠŸΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠΈ систСмных событий

Android ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сообщСния для систСмных событий, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ зарядки Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ, сСтСвыС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, входящиС Π·Π²ΠΎΠ½ΠΊΠΈ, измСнСния часового пояса, состояниС ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ…, входящиС сообщСния SMS ΠΈΠ»ΠΈ обращСния ΠΏΠΎ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Ρƒ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти сообщСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊ вашим собствСнным ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌ Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности, основанныС Π½Π° систСмных событиях.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ список ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· встроСнных дСйствий, прСдставлСнных ΠΊΠ°ΠΊ константы Π² классС Intent, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ измСнСния состояния устройства:

Π’ΠΈΠΏΡ‹ трансляций

Π•ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ способа ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ трансляций

Если Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ намСрСния Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌ порядкС ΠΈΠ»ΠΈ ΠΌΠΎΠ³Π»ΠΈ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° транслируСмоС Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ sendOrderedBroadcast():

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° вашС Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Π΄ΠΎ всСх зарСгистрированных ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠΎΠ², ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΡ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ доступом (Ссли ΠΎΠ½ Π±Ρ‹Π» ΡƒΠΊΠ°Π·Π°Π½), Π² порядкС ΠΈΡ… ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°. ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ задаётся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° android:priority Π²Π½ΡƒΡ‚Ρ€ΠΈ ΡƒΠ·Π»Π° Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ Π² манифСстС. Π§Π΅ΠΌ большС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ упорядочСнныС трансляции с использованиСм ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ² рСкомСндуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚Π΅Ρ… ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ порядок ΠΏΡ€ΠΈΡ‘ΠΌΠ° сообщСний.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Π² Android 8.0 Oreo (API 26)

Π§Π°ΡΡ‚ΡŒ нСявных (implicit) ΡˆΠΈΡ€ΠΎΠΊΠΎΠ²Π΅Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… сообщСний, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· манифСст, Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΠ»ΠΈ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ. БущСствуСт список ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΡ€Π΅ΠΆΠ΄Π΅ Π±Π΅Π· ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ.

Π’ качСствС Π·Π°ΠΌΠ΅Π½Ρ‹ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаСв ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ JobScheduler.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π³ΠΎ способа Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊΠΎΠΌ являСтся android.net.conn.CONNECTIVITY_CHANGE, ACTION_POWER_CONNECTED ΠΈ Π΄Ρ€.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ Π² Android 9.0 Pie (API 28)

Π‘Ρ‚Π°Π»ΠΎ доступно мСньшС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈ трансляции систСмы Wi-Fi ΠΈ Network_State_Changed_Action.

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

Android BroadcastReceiver, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android

НапримСр: ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ BroadcastReceiver ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»ΡΡ‚ΡŒ нас ΠΎΠ±ΠΎ всСх измСнСниях с ΡΠ΅Ρ‚ΡŒΡŽ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚. И ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ нас ΠΏΡ€ΠΎΠΏΠ°Π΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅.

Π’Π°ΠΊΠΆΠ΅, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΡΡ‹Π»Π°Ρ‚ΡŒ сообщСния. НапримСр, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сообщСниС ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ части прилоТСния Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ, ΠΏΡ€ΠΈ этом пСрСсылка сообщСний ΠΏΠΎΡ‚ΠΎΠΊΠΎ-бСзопасна, Ρ‚. Π΅. ΠΌΡ‹ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΎΡΠ»Π°Ρ‚ΡŒ сообщСниС Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅, Π° ΡΠ»ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сообщСния ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ прилоТСния Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° сообщСний ΠΈ ΠΈΡ… ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ происходит с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° (ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠ³ΠΎ адрСса). Об этом я расскаТу ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Ρ‡ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅.

Π˜Ρ‚Π°ΠΊ, Π΅ΡΡ‚ΡŒ нСсколько способов, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с BroadcastReceiver. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ способ ΡƒΠ΄ΠΎΠ±Π΅Π½ Π² своСй ситуации, которая зависит ΠΎΡ‚ поставлСнных Π·Π°Π΄Π°Ρ‡.

Бпособ Π½ΠΎΠΌΠ΅Ρ€ 1

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android

Π—Π°Π΄Π°Ρ‡Π°: ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ сообщСния всСгда, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ. Π’ этом Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ наша подписка Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ всСгда ΠΈ ΠΌΡ‹ Π½Π΅ смоТСм Π΅Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ.

Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ увСдомлСния Π΄Π°ΠΆΠ΅ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎ (Ρ‚. Π΅. ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄Π°ΠΆΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΡƒΠ·Π½Π°Π΅Ρ‚ Ρ…Π΅-Ρ…Π΅:) ).

Π˜Ρ‚Π°ΠΊ, Π²ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ получатСля сообщСний. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎΡ‚ BroadcastReceiver. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ абстрактного класса BroadcastReceiver ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ onReceive.
Π’ΠΎΡ‚ Ρ‚Π°ΠΊ:

ΠœΡ‹ создали свой класс MyBroadcastReceiver.java ΠΈ наслСдовались ΠΎΡ‚ BroadcastReceiver Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится абстрактный ΠΌΠ΅Ρ‚ΠΎΠ΄ onReceive(), Π΅Π³ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ просто Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π² консоль LogCat сообщСниС.

ΠœΠ΅Ρ‚ΠΎΠ΄ onReceive() Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Π½Π°ΠΌ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ Π·Π°Ρ€Π΅Π³Π΅ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ (ΠΊΡƒΠΏΠΈΠ»ΠΈ подписку ΠΆΡƒΡ€Π½Π°Π»Π°:) ).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ BroadcastReceiver ΠΊΠ°ΠΊΠΈΠ΅ сообщСния ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈ ΠΊΡƒΠ΄Π° ΠΏΡ€ΠΈΡΡ‹Π»Π°Ρ‚ΡŒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ (Ρ‚. Π΅. Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ-Π±Ρ‹ увСдомлСния ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΈ Π² наш класс MyBroadcastReceiver.java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ создали Π²Ρ‹ΡˆΠ΅).

Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ запись Π² Ρ„Π°ΠΉΠ»Π΅ AndroidManifest.xml. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π³Π° — Ρ‚Π°ΠΌ, Π³Π΄Π΅ Ρƒ нас прописаны наши Активити, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

На этом всС. Π’ΠΎΡ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ AndroidManifest.xml, Ρ‡Ρ‚ΠΎ-Π±Ρ‹ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΡƒΠ΄Π° Π²ΠΏΠΈΡΠ°Ρ‚ΡŒ MyBroadcastReceiver.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ/Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ доступ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ ΠΈ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Π² консоли выводится нашС сообщСниС. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π΄Π°ΠΆΠ΅ Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°ΠΏΡƒΡˆΠ΅Π½ΠΎ.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ этот способ Π½Π΅ распростанСн, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π½Π΅ самоС Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, постоянно Π±Ρ‹Ρ‚ΡŒ подписанным Π½Π° увСдомлСния. Π­Ρ‚ΠΎ ΠΎΡ‚ΠΆΠΈΡ€Π°Π΅Ρ‚ рСсурсы систСмы, Π΄Π° ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ всС Ρ‚Π°ΠΊΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π² Π½Π΅Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠšΠžΠ“Π”Π Π˜Π‘ΠŸΠžΠ›Π¬Π—ΠžΠ’ΠΠ’Π¬ ДАННЫЙ ΠœΠ•Π’ΠžΠ”

Бпособ Π½ΠΎΠΌΠ΅Ρ€ 2

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… условиях. НапримСр, ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Π» ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Нам Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ всСгда ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΡ…, ΠΊΠ°ΠΊ Π² способС 1, Π½ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ увСдомлСния ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π½Π°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹.

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ увСдомлСния, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Activity ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Activity.

Π‘ΠΏΠ΅Ρ€Π²Π°, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ способС Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ Π½Π°ΠΌ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅:

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом классС ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² способС 1, Ссли пропустили ΠΈΠ»ΠΈ Π·Π°Π±Ρ‹Π»ΠΈ.

А Π²ΠΎΡ‚ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ самоС интСрСсноС. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ увСдомлСния ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΡ… Π² AndroidManifest.xml. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, Ссли Ρƒ вас остался ΠΊΠΎΠ΄ с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ способа, ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΈΠ»ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ΄Π΅ΠΌ Π² Π½Π°ΡˆΡƒ Activity Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈ ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ увСдомлСния. Для этого ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ onResume(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ срабатываСт Π½Π° стартС Activity ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ onPause(), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ срабатываСт ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΡƒΡ…ΠΎΠ΄ΠΈΠΌ с Activity. НапишСм Π² этих ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΊΠΎΠ΄ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ:

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ registerReceiver() ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π² Π½Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ увСдомлСния + ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса IntentFilter, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Андроиду, ΠΊΠ°ΠΊΠΈΠ΅ увСдомлСния ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ

ΠœΠ΅Ρ‚ΠΎΠ΄ registerReceiver() доступСн Π² Activity, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ находится Π² классС Context ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ наслСдуСтся стандартный класс Activity.

Π§Ρ‚ΠΎ-Π±Ρ‹ ΠΎΡ‚ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ unregisterReceiver(), Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ нашСго класса MyBroadcastReceiver. Π’. e. ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Андроиду, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ большС Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ увСдомлСния Π² класс MyBroadcastReceiver.

На этом всС, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ увСдомлСния Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ приходят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Ρƒ нас ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π° наша Activity, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ прописали ΠΊΠΎΠ΄ для рСгистрации ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ.

Бпособ Π½ΠΎΠΌΠ΅Ρ€ 3

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ receiver android

Π—Π°Π΄Π°Ρ‡Π°: ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Π² интСрфСйсС Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅. Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ интСрфСйсу (Activity).

Π­Ρ‚ΠΎΡ‚ способ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ отличаСтся ΠΎΡ‚ способа Π½ΠΎΠΌΠ΅Ρ€ 2, просто Ρ‚ΡƒΡ‚ ΠΌΡ‹ размСстили ΠΊΠΎΠ΄ для получСния ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ прямо Π² классС Activity Ρ‚. Π΅. ΠΌΡ‹ пСрСнСсСм MyBroadcastReceiver Π² класс Activity.

Π‘Π΄Π΅Π»Π°Π΅ΠΌ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС увСдомлСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² наш Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΉ класс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ onReceive(). Код Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° onReceive() выполняСтся Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ интСрфСйс, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρƒ нас Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² интСрфСйсС прямо ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° onReceive().

Π­Ρ‚ΠΎΡ‚ способ самый распространСнный Π² Андроид.

ΠšΠžΠ“Π”Π Π˜Π‘ΠŸΠžΠ›Π¬Π—ΠžΠ’ΠΠ’Π¬ ДАННЫЙ ΠœΠ•Π’ΠžΠ”

Бпасибо, Ρ‡Ρ‚ΠΎ Π΄ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°! УспСхов Π²Π°ΠΌ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ ΠΊΡ€ΡƒΡ‚ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Android!

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

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

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