Junior
Androidдеги BroadcastReceiver деген эмне?
sobes.tech AI
AIден жооп
Бул компонент системдик же колдонуучунун кеңири тараган билдирүүлөрүнө (broadcasts) жооп берет. Ал колдонуучунун интерфейси жок жана белгилүү окуяларга жооп берүү үчүн фондук операцияларды аткарууга арналган.
Негизги өзгөчөлүктөрү:
- максаттар (Intents) белгилүү иш-аракеттер (action) менен жооп берет.
- кыска мөөнөттүү компонент, анын
onReceive()методу кыска убакытта иштейт. - узак мөөнөттүү операцияларга арналган эмес, эгер узак иштөө керек болсо,
onReceive()ичинен Service иштетүү керек. - статикалык түрдө манифестте же коду аркылуу катталышы мүмкүн.
Колдонуу мисалдары:
- тармактын абалынын өзгөрүшүнө жооп берүү (
android.net.conn.CONNECTIVITY_CHANGE) - тутумдун жүктөлүшүнө жооп берүү (
android.intent.action.BOOT_COMPLETED) - кирүү SMS-терин иштетүү
- башка компоненттер же башка колдонмолор тарабынан жөнөтүлгөн колдонуучунун билдирүүлөрүн алуу
Манифестте каттоо:
<receiver android:name=".MyBroadcastReceiver"
android:exported="true"> // exported="true" башка колдонмолор да intents жөнөтө алат
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Коддо каттоо:
// Activity же Service ичинде
IntentFilter filter = new IntentFilter("com.example.MY_CUSTOM_ACTION");
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
registerReceiver(receiver, filter);
// onDestroy() же onStop() ичинде - каттоону өчүрүү маанилүү!
unregisterReceiver(receiver);
BroadcastReceiver классы:
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Бул жерде Intent алганда аткарылуучу код
// Мисалы:
if ("com.example.MY_CUSTOM_ACTION".equals(intent.getAction())) {
Toast.makeText(context, "Ишке киргизилген атайын аракет кабыл алынды!", Toast.LENGTH_SHORT).show();
}
}
}