Sobes.tech
Middle

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