Sobes.tech
Middle

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терди алат Суроо аркылуу маалыматтарды берет