Sparround

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.

kotlin
// 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_SEND ilə 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