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

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

BroadcastReceiver(無序廣播)

2019-11-09 17:29:44
字體:
來源:轉載
供稿:網友

       今天了解了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>        


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 九台市| 宁河县| 大关县| 铁岭市| 育儿| 滨海县| 海阳市| 鄂州市| 洞头县| 绍兴市| 莒南县| 瑞丽市| 色达县| 河北省| 庆城县| 长治县| 镇沅| 秦安县| 句容市| 富阳市| 井研县| 涟源市| 东乡| 剑川县| 永靖县| 革吉县| 鹤壁市| 任丘市| 建湖县| 舟曲县| 吉林省| 武义县| 潜山县| 清徐县| 夹江县| 富川| 吕梁市| 谷城县| 邵武市| 郎溪县| 阿坝|