Android'deki alıcılar ve içerik sağlayıcıları hakkında bilgi verin.
sobes.tech yapay zeka
AI'dan gelen yanıt
Yayın Alıcıları (Broadcast Receivers), sistem genelinde yayınlanan mesajlara tepki verir, örneğin düşük pil uyarıları, ağ bağlantısı veya fotoğraf çekme gibi. Görsel arayüzleri yoktur ve arka planda görev yaparlar.
İki ana türü vardır:
- Statik kaydedilenler:
AndroidManifest.xmliçinde ilan edilirler. Sistem, ilgili intent alındığında uygulamayı başlatır, hatta çalışmıyorsa bile. - Dinamik kaydedilenler: Kod içinde
Context.registerReceiver()kullanılarak kaydedilirler. Sadece bileşen (örneğin, aktivite) var olduğu sürece çalışırlar.
Her alıcı, gelen intent'i işlerken onReceive(Context context, Intent intent) metodunu uygular.
İçerik sağlayıcıları (Content Providers), yapılandırılmış verilere ortak erişimi yönetir. Verilerle etkileşim için standartlaştırılmış CRUD (Create, Read, Update, Delete) arayüzü sağlarlar ve çeşitli kaynaklarda (SQLite veritabanları, dosyalar, ağ verileri vb.) saklanan verilerle çalışırlar.
İçerik sağlayıcısının temel metodları:
onCreate(): Sağlayıcıyı başlatır.query(): Kaynaktan veri alır.insert(): Yeni veri ekler.update(): Mevcut veriyi günceller.delete(): Veriyi siler.getType(): Bu URI için MIME türünü döner.
İçerik sağlayıcıya erişim, ContentResolver aracılığıyla yapılır. URI (Birleşik Kaynak Tanımlayıcısı), belirli bir veri kümesini tanımlar.
ContentResolver kullanarak veri sorgulama örneği:
// Kişi tablosu için Uri
Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
// Veri sorgulama
Cursor cursor = getContentResolver().query(
contactsUri,
projection,
null, // seçim
null, // seçim argümanları
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));
// Veri işleme
}
cursor.close();
}
AndroidManifest.xml içinde statik yayın alıcısı kaydı örneği:
<receiver
android:name=".MyBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BATTERY_LOW" />
</intent-filter>
</receiver>
Alıcı sınıfı örneği:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction() != null && intent.getAction().equals(Intent.ACTION_BATTERY_LOW)) {
// Düşük pil durumu için yapılacaklar
}
}
}
Ana farklar:
| Özellik | Yayın Alıcıları (Broadcast Receivers) | İçerik Sağlayıcılar (Content Providers) |
|---|---|---|
| Amaç | Yayınlanmış olaylara tepki verme | Verilere erişimi yönetme |
| Arayüz | onReceive() fonksiyonu |
CRUD metodları ContentResolver ile |
| Görsel | Yok | Yok |
| Erişim | Sistemden intent alırlar | Talep üzerine veri sağlarlar |