Androidдеги кабылдачылар жана мазмун жеткирүүчүлөр жөнүндө айтып бериңиз.
sobes.tech AI
AIден жооп
Таратуучулар (Broadcast Receivers) жалпы системдик кеңири тарату билдирүүлөрүнө, мисалы, батареянын төмөн деңгээли, тармакка туташуу же сүрөткө тартуу жөнүндө билдирүүлөргө жооп беришет. Алар визуалдык интерфейске ээ эмес жана фондук тапшырмаларды аткарышат.
Ички эки негизги түрү бар:
- Статикалык катталган:
AndroidManifest.xmlфайлында жарыяланат. Система тиешелүү intentти алган учурда тиркемени иштетет, ал иштетилбесе да. - Динамик катталган:
Context.registerReceiver()аркылуу коддо катталат. Келген компонент (мисалы, активдүүлүк) бар болгондо гана иштейт.
Ар бир кабылдоочу onReceive(Context context, Intent intent) методун ишке ашырат, анда кирүүчү intent иштелип чыгат.
Content берүүчүлөр (Content Providers) түзүлгөн маалыматтарга жалпы кирүүнү башкаруучу. Алар стандарттуу CRUD (Create, Read, Update, Delete) интерфейсин камсыз кылышат, ал маалыматтар ар башка булактарда (SQLite базалары, файлдар, тармактык маалыматтар жана башка) сакталат.
Негизги методдору:
onCreate(): берүүчүнүн баштапкы ишке киришүүсү.query(): булактан маалымат алуу.insert(): жаңы маалыматтарды кошуу.update(): бар маалыматтарды жаңылоо.delete(): маалыматтарды өчүрүү.getType(): берилген URI боюнча MIME түрүн кайтаруу.
Маалымат берүүчүгө кирүү ContentResolver аркылуу жүргүзүлөт. URI (Unified Resource Identifier) конкреттүү маалымат топтомун аныктоо үчүн колдонулат.
Мисал катары ContentResolver колдонуп маалыматтарды суроо:
// Байланыштар таблицасы үчүн URI
Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
String[] projection = {
ContactsContract.Contacts._ID,
ContactsContract.Contacts.DISPLAY_NAME
};
// Маалыматтарды суроо
Cursor cursor = getContentResolver().query(
contactsUri,
projection,
null, // тандоо
null, // тандоо аргументтери
null // сорттоо
);
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));
// Маалыматты иштетүү
}
cursor.close();
}
Статикалык кабылдоочу каттоо мисалы AndroidManifest.xml файлында:
<receiver
android:name=".MyBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BATTERY_LOW" />
</intent-filter>
</receiver>
Код мисалы:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction() != null && intent.getAction().equals(Intent.ACTION_BATTERY_LOW)) {
// Төмөн батарея деңгээлине аракеттер
}
}
}
Негизги айырмачылыктар:
| Өзгөчөлүк | Broadcast Receivers | Content Providers |
|---|---|---|
| Мезгил | Кеңири тарату окуяларына реакция | Маалыматка кирүүнү башкаруу |
| Интерфейс | onReceive() |
CRUD методдору ContentResolver аркылуу |
| Визуалдык көрүнүш | Жок | Жок |
| Кирүү | Система тарабынан келген intentтерди алат | Суроо аркылуу маалыматтарды берет |