????????說到Android的廣播隘蝎,分為動態(tài)廣播和靜態(tài)廣播兩種爱致。這篇文章主要講解下Android的動態(tài)廣播哥放。廣播的作用主要是根據(jù)數(shù)據(jù)的變化及時刷新UI效果。現(xiàn)如今由于EventBus的出現(xiàn)很少使用廣播了咖摹,但學(xué)習(xí)還是有必要的 评姨。
? ? ? 動態(tài)廣播的步驟
? ? ? ?1 .自定義廣播繼承BroadcastReceiver 實(shí)現(xiàn)OnReceiver方法 方法主要是對UI進(jìn)行刷新的操作 ,方法中有兩個參數(shù)上下文context 和intent萤晴,這里主要是對intent進(jìn)行篩選intent.getAction
? ? ? ?2.注冊廣播registerReceiver(myReceiver) 一般是在onCreate注冊 吐句,當(dāng)Activity或者Fragment銷毀的時候應(yīng)該銷毀該廣播u'ngisterReceiver(myReceiver)
? ? ? ?3.sendReceiver(intent)改變數(shù)據(jù)的操作
? ? ?實(shí)例:
? ?以我們項(xiàng)目中的PersonPickerReceiver為例來講解下
第一步:
private class PersonPickerRecevierextends BroadcastReceiver {?
@Override
? public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
? ? ? String action = intent.getAction();
? ? ? if (action.equals("android.guestcount.choice.action")) {
? ? ? ? ? ? //數(shù)據(jù)處理邏輯
? ? ? }else if (action.equals("android.setStatus.action")) {
????????//數(shù)據(jù)處理邏輯
? ? }
}
第二步:注冊廣播? ? ?IntentFilter過濾
? ?IntentFilter filter =new IntentFilter();
? ?filter.addAction("android.guestcount.choice.action");
? ?filter.addAction("android.setStatus.action");
? registerReceiver(recevier, filter);
銷毀廣播
@Override? ? ? ?
protected void onDestroy() {
super.onDestroy();
? unregisterReceiver(recevier);
}
第三步:數(shù)據(jù)改變的操作
Intent intent =new Intent();
intent.setAction("android.guestcount.choice.action");
context.sendBroadcast(intent);
?
??