Sobes.tech
Junior

Бигзор BroadcastReceiver дар Android чист?

sobes.tech AI

Ҷавоб аз AI

Ин компоненте, ки ба паёмҳои паҳншудаи системӣ ё корбар ҷавоб медиҳад. Вай интерфейси корбарӣ надорад ва барои иҷрои амалиётҳои пасзамина дар посух ба рӯйдодҳои муайян пешбинӣ шудааст.

Хусусиятҳои асосӣ:

  • Ба ниятҳо (Intents) бо амали (action) муайян ҷавоб медиҳад.
  • Компоненти кӯтоҳмуддат, усули onReceive() дар давоми кӯтоҳ иҷро мешавад.
  • Барои амалиёти дарозмуддат пешбинӣ нашудааст. Агар кор дарозмуддат лозим бошад, бояд Service аз onReceive() оғоз карда шавад.
  • Метавонад статикӣ дар манфест ё динамикӣ дар код сабт шавад.

Маслиҳатҳои истифода:

  • Ба тағиротҳои ҳолати шабака ҷавоб додан (android.net.conn.CONNECTIVITY_CHANGE).
  • Ба оғозёбии системаи (android.intent.action.BOOT_COMPLETED) ҷавоб додан.
  • Коркарди SMS-и воридотӣ.
  • Гирифтани паёмҳои корбарӣ, ки аз ҷониби дигар компонентҳо ё дигар барномаҳо фиристода шудаанд.

Дар манфест сабт:

<receiver android:name=".MyBroadcastReceiver"
          android:exported="true"> // exported="true" барои имкон додан ба дигар барномаҳо интизорӣ фиристодан
    <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();
        }
    }
}