日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android——发送和接收广播

發(fā)布時(shí)間:2024/4/13 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android——发送和接收广播 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.



一,發(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ū)別:


1sendBroadcastsendStickyBroadcast發(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ù),可以用IntentputExtra方法。

?

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,接收廣播


public class BroadcastReceiverActivity extends BroadcastReceiver{@Overridepublic void onReceive(Context arg0, Intent arg1) {String Intent_Action=arg1.getAction();if("com.example.broadcastdemp".equals(Intent_Action)){Log.e("BroadcastReceiver","onReceive");}} }


????? 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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。