Android-də qəbul edənlər və məzmun təminatçıları haqqında danış.
sobes.tech Süni İntellekt
AI-dan cavab
Yayımçılar (Broadcast Receiver-lər) ümumi sistem yayım mesajlarına, məsələn, batareyanın aşağı səviyyəsi, şəbəkəyə qoşulma və ya şəkil çəkilməsi barədə bildirişlərə reaksiya verir. Onların vizual interfeysi yoxdur və fon tapşırıqları yerinə yetirirlər.
İki əsas növü mövcuddur:
- Statik qeydiyyatdan keçmiş:
AndroidManifest.xml-də elan edilir. Sistem müvafiq intent alınanda tətbiqi işə salır, hətta o işə salınmayıbsa belə. - Dinamik qeydiyyatdan keçmiş:
Context.registerReceiver()vasitəsilə kodda qeydiyyatdan keçirilir. Yalnız komponent (məsələn, aktivlik) mövcud olduqda işləyir.
Hər bir receiver onReceive(Context context, Intent intent) metodunu həyata keçirir, burada daxil olan intent işlənir.
Content Provider-lər strukturlaşdırılmış məlumatlara ümumi giriş idarə edir. Onlar müxtəlif mənbələrdə (SQLite bazaları, fayllar, şəbəkə məlumatları və s.) saxlanılan məlumatlarla qarşılıqlı əlaqə üçün standart CRUD (Yarat, Oxu, Yeniləmək, Sil) interfeysini təmin edir.
Əsas content provider metodları:
onCreate(): Provider-in ilkinləşdirilməsi.query(): Məlumatların alınması.insert(): Yeni məlumatların əlavə olunması.update(): Mövcud məlumatların yenilənməsi.delete(): Məlumatların silinməsi.getType(): Bu URI üçün MIME tipini qaytarır.
Content provider-ə giriş ContentResolver vasitəsilə həyata keçirilir. URI (Birləşmiş Resurs İdentifikatoru) müəyyən məlumat dəstini tanımaq üçün istifadə olunur.
ContentResolver istifadə edərək məlumat sorğulama nümunəsi:
// Əlaqə cədvəli üçün Uri
Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
// Məlumat sorğusu
Cursor cursor = getContentResolver().query(
contactsUri,
projection,
null, // seçici
null, // seçici arqumentləri
null // sıralama
);
if (cursor != null) {
while (cursor.moveToNext()) {
long contactId = cursor.getLong(cursor.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String displayName = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
// Məlumatların işlənməsi
}
cursor.close();
}
AndroidManifest.xml-də statik receiver qeydiyyatı nümunəsi:
<receiver
android:name=".MyBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BATTERY_LOW" />
</intent-filter>
</receiver>
Receiver-in həyata keçirilməsi nümunəsi:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction() != null && intent.getAction().equals(Intent.ACTION_BATTERY_LOW)) {
// Aşağı batareya səviyyəsində tədbirlər görülür
}
}
}
Əsas fərqlər:
| Xüsusiyyət | Yayımçılar (Broadcast Receivers) | Content Provider-lər |
|---|---|---|
| Təyinatı | Yayım hadisələrinə reaksiya | Məlumatlara giriş idarə edir |
| İnterfeys | onReceive() |
CRUD metodları ContentResolver vasitəsilə |
| Vizual təqdimat | Yoxdur | Yoxdur |
| Giriş | Sistem tərəfindən intent-lər alır | Sorğu ilə məlumat təqdim edir |