4 əsas komponent və Intent-lər
Android tətbiqi 4 komponent tipindən qurulur — hər biri sistemin tətbiqə giriş nöqtəsidir:
- Activity — bir UI ekranı; istifadəçi ilə interaksiyanın giriş nöqtəsi.
- Service — UI-sız arxa plan işi (musiqi, sinxronizasiya). Foreground service istifadəçiyə bildirişlə görünür.
- BroadcastReceiver — sistem/tətbiq hadisələrinə (şəbəkə dəyişdi, boot bitdi) reaksiya.
- ContentProvider — tətbiqlər arası strukturlaşdırılmış data paylaşımı (məs. kontaktlar).
Komponentlər Intent ilə aktivləşdirilir (ContentProvider istisna — o, ContentResolver ilə). Explicit intent konkret class-ı göstərir (öz ekranların arasında), implicit intent isə hərəkəti (ACTION_VIEW, ACTION_SEND) elan edir və sistem uyğun komponenti tapır.
// Explicit — konkret ekran
val intent = Intent(this, TransferActivity::class.java).apply {
putExtra("accountId", accountId)
}
startActivity(intent)
// Implicit — sistem uyğun tətbiqi tapır
val share = Intent(Intent.ACTION_SEND).apply {
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, "Qəbz #12345")
}
startActivity(Intent.createChooser(share, null))Explicit vs implicit intent
Bank tətbiqi konteksti: implicit intent-lə həssas data göndərmək risklidir — hansı tətbiqin cavab verəcəyinə zəmanət yoxdur. Daxili keçidlərdə həmişə explicit intent, exported="false" komponentlər və extras-da minimum data prinsipi. Manifest-də exported atributu Android 12-dən intent-filter-li komponentlər üçün məcburidir.
🛠 Tapşırıq
Manifest məşqi: mövcud layihəni (və ya yeni boş layihəni) aç və manifest-dəki hər komponentin exported dəyərini yoxla.
- Bir explicit, bir də implicit intent yaz (
ACTION_SENDilə qəbz paylaşımı). - Implicit intent-in hansı tətbiqləri təklif etdiyinə bax — həssas datanı niyə belə göndərmək olmaz?
- Cədvəl şəklində yaz: 5 istifadə halı → hansı komponent.
Bitdi sayılır: "bunu hansı komponentlə edərsən" suallarına baxmadan cavab verirsənsə.
📚 Mənbələr və sənədlər
- Application fundamentalsrəsmideveloper.android.com
- Intents və intent filtersrəsmideveloper.android.com
- Services icmalırəsmideveloper.android.com