Android——发送和接收广播
一,發(fā)送廣播
?
利用Intent來(lái)發(fā)送廣播。
使用:在需要發(fā)送廣播的地方創(chuàng)建一個(gè)Intent對(duì)象,將信息的內(nèi)容和用于過(guò)濾的信息封裝起來(lái),通過(guò)以下三種方法將Intent廣播出去:
1,Context.sendBroadcast
2,Context.sendOrderedBroadCast
3,Context.sendStickyBroadcast
?
三種方法的區(qū)別:
1,sendBroadcast和sendStickyBroadcast發(fā)送出去的Intent,對(duì)于所有滿足條件的BroadcastReceiver都會(huì)執(zhí)行其onReceive方法。但若有多個(gè)滿足條件的BroadcastReceiver,其執(zhí)行onReceive方法的順序是沒(méi)有保證的。
?
2,通過(guò)sendOrderedBroadCast方法發(fā)送出去的Intent,會(huì)根據(jù)BroadcastReceiver注冊(cè)時(shí)IntentFilter設(shè)置的優(yōu)先級(jí)的順序來(lái)執(zhí)行onReceive方法,相同優(yōu)先級(jí)的BroadcastReceiver執(zhí)行onReceive方法的順序是沒(méi)有保證的。
?
其中,sendStickyBroadcast主要的不同時(shí),Intent在發(fā)送后會(huì)一直存在,并且在以后調(diào)用registerReceiver注冊(cè)相匹配的Receiver時(shí)會(huì)把這個(gè)Intent對(duì)象直接返回給新注冊(cè)的Receiver
?
通常我們?cè)诎l(fā)送廣播時(shí)候,使用的是sendBroadcast,但需要注意的是,在構(gòu)造Intent時(shí),必須用一個(gè)全局唯一的字符串標(biāo)示其要執(zhí)行的動(dòng)作,通常使用應(yīng)用程序的包名稱,也可以采用自己定義的動(dòng)作。如果要在Intent中傳遞其他數(shù)據(jù),可以用Intent的putExtra方法。
?
String Intent_Activity="lhc";
Intent intent=newIntent(Intent_Activity);
Intent.putExtra("參數(shù)",“參數(shù)值”);
sendBroadcast(intent);
二,接收廣播
在于Activity相同的包下面定義廣播器。廣播器類要繼承BroadcastReceiver類。
但是在接收到廣播之后,要想處理相關(guān)事件,我們必須覆蓋其OnReceiver方法,在該方法中實(shí)現(xiàn)對(duì)廣播事件的相關(guān)處理,當(dāng)安卓系統(tǒng)接收到與之匹配的廣播消息時(shí),會(huì)自動(dòng)啟動(dòng)此BroadcastReceiver開(kāi)始接受廣播。
?
注意的是:OnReceive方法必須在5秒鐘內(nèi)執(zhí)行完成,否則安卓系統(tǒng)會(huì)認(rèn)為該組建失去響應(yīng),并提示用戶強(qiáng)行關(guān)閉該組件。因此對(duì)于比較耗時(shí)的操作,要單獨(dú)開(kāi)一個(gè)線程。
三,聲明廣播
兩種廣播的注冊(cè)方式:
1,代碼注冊(cè)廣播
2,在AndroidMainfest.xml中注冊(cè)
?
兩種注冊(cè)類型的區(qū)別:
1,第一種不是常駐型廣播,也就是廣播跟隨程序的生命周期;
2,第二種是常駐類型的廣播,也就是說(shuō)當(dāng)應(yīng)用程序關(guān)閉后,如果有信息廣播過(guò)來(lái),程序廣播接收器也會(huì)被系統(tǒng)調(diào)用自動(dòng)運(yùn)行。
四,示例
?????????????????????
?????????? 1,發(fā)送廣播
???????????????????????
public class BroadCastActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button=(Button)super.findViewById(R.id.button);button.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View arg0) {String Intent_Action="com.example.broadcastdemp";Intent intent=new Intent(Intent_Action); //sendBroadcast(intent);//發(fā)送廣播,并傳遞intentLog.e("BroadcastReceiver","sendbroadcast");}});}????????? 2,接收廣播
????? 4,使用XML配置接收廣播的類
?????????????
<receiver android:name=".BroadcastReceiverActivity"><intent-filter><action android:name="com.example.broadcastdemp"/></intent-filter></receiver>????run?下看看:
????????????????
總結(jié)
以上是生活随笔為你收集整理的Android——发送和接收广播的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 150929.js过完
- 下一篇: android sina oauth2.