国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

BroadcastReceiver(無序廣播)

2019-11-09 16:24:49
字體:
來源:轉載
供稿:網友

       今天了解了BroadcastReceiver,也就是廣播接收者,顧名思義,它就是用來接收來自系統和應用中的廣播。在Android系統中,廣播體現在方方面面,比如說開機、電量改變、收發短信、撥打電話、屏幕解鎖等等。

現在我來演示一下創建BroadcastReceiver,并且能夠接收我們所需要的消息。我們先建一個sender(發送端)的項目,寫一個發送端的界面,界面代碼如下:<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:orientation="vertical"tools:context="com.example.smz.a0831_android_sender.MainActivity"><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:hint="請輸入廣播內容"android:id="@+id/et_main_content"/><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="發送"android:onClick="send"/></LinearLayout>public void send(View view){String content=et_main_content.getText().toString();intent.putExtra("data",content);//發送廣播(無序廣播)sendBroadcast(intent);}發送端我們寫好了現在我們寫接收端,我們首先創建一個廣播接收者,名為MyReceived01:public class MyReceived01 extends BroadcastReceiver {@Overridepublic voidonReceive(Context context, Intent intent) {if("com.example.smz.a0831_android_sender.955".equals(intent.getAction()));String data=intent.getStringExtra("data");Log.i("test","01號接收者收到廣播:"+data);}第二步:注冊BroadcastReceiver一旦實現了BroadcastReceiver,接下就應該指定該BroadcastReceiver能匹配的Intent即注冊BroadcastReceiver。注冊BroadcastReceiver的方式有兩種:(動態廣播的優先級比靜態要高)第一種是靜態注冊:這種方法是在配置AndroidManifest.xml配置文件中注冊,通過這種方式注冊的廣播為常駐型廣播,也就是說如果應用程序關閉了,有相應事件觸發程序還是會被系統自動調用運行。例如:<!-- 在配置文件中注冊BroadcastReceiver能夠匹配的Intent --><!--配置廣播接收者--><receiver android:name=".MyReceived01"><intent-filter><action android:name="com.example.smz.a0831_android_sender.955"></action></intent-filter></receiver>配置完了后,只要是com.example.smz.a0831_android_sender.955這個地址的廣播,MyReceived01都能接收到。注:這里我寫兩個接收端,兩個接收端代碼都差不多,只需要改下命名即可)。第二種: 動態注冊:public classMainActivityextendsAppCompatActivity {PRivate MyReceived02 myReceived02;private IntentFilter intentFilter;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);myReceived02 = new MyReceived02();intentFilter = new IntentFilter();intentFilter.addAction("com.example.smz.a0831_android_sender.955");}@Overrideprotected voidonResume() {super.onResume();//注冊廣播registerReceiver(myReceived02,intentFilter);}注意,registerReceiver是android.content.ContextWrapper類中的方法,Activity和Service都繼承了ContextWrapper,所以可以直接調用。在實際應用中,我們在Activity或Service中注冊了一個BroadcastReceiver,當這個Activity或Service被銷毀時如果沒有解除注冊,系統會報一個異常,提示我們是否忘記解除注冊了。所以,記得在特定的地方執行解除注冊操作://注銷@Overrideprotected voidonDestroy() {super.onDestroy();unregisterReceiver(myReceived02);}黏性廣播:它分為有序黏性和無序黏性,它只需要在發送端寫如下代碼//發送黏性廣播sendStickyBroadcast(intent);就好了。然后在添加一個黏性個廣播的權限即可<!--添加發送黏性廣播權限--><uses-permissionandroid:name="android.permission.BROADCAST_STICKY"></uses-permission>        


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 读书| 镇赉县| 禄丰县| 西盟| 伊宁县| 当雄县| 陇西县| 福海县| 济南市| 南和县| 儋州市| 巴东县| 梧州市| 曲松县| 革吉县| 崇礼县| 拉孜县| 开原市| 肥乡县| 瓮安县| 寿光市| 威海市| 呼图壁县| 凤山市| 许昌市| 清涧县| 锡林郭勒盟| 剑河县| 陆丰市| 思茅市| 马龙县| 玛纳斯县| 永泰县| 西乌珠穆沁旗| 滦南县| 酒泉市| 万载县| 布拖县| 桃园县| 龙泉市| 武平县|