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

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

廣播的使用

2019-11-08 01:40:48
字體:
來源:轉載
供稿:網友

一共分三步

1.定義一個BroadcastReceiver廣播接收類2.注冊該廣播3.觸發響應

1. 概念

廣播事件處理屬于系統級的事件處理(一般事件處理是屬于View級的事件處理)

一個應用可以在發生特定事件時發送Broadcast, 系統中任何應用只要注冊了對應Receiver就會接收到此Broadcast

一個應用如果對某個廣播感興趣, 就可以注冊對應的Receiver來接收廣播

廣播事件機制是應用程序(進程間)之間通信的一種手段

2. 相關 API

//ContextsendBroadcast(Intent intent) : 發送一般廣播sendOrderedBroadcast(Intent intent) : 發送有序廣播registerReceiver(receiver, intentFilter) : 注冊廣播接收器unRegisterReceiver(receiver) : 解注冊廣播接收器//BroadcastReceiveronReceive(Context context, Intent intent) : 接收到廣播的回調abortBroadcast() : 中斷廣播的繼續傳播boolean isOrderedBroadcast() : 判斷是否是有序廣播

3. 常見系統廣播

收到短信廣播 : android.PRovider.Telephony.SMS_RECEIVED開機完成廣播 : Intent.ACTION_BOOT_COMPLETED應用被卸載廣播 : Intent.ACTION_PACKAGE_REMOVED手機鎖屏 : Intent.ACTION_SCREEN_OFF手機開屏 : Intent.ACTION_SCREEN_ON

4. 編寫 BroadcastReceiver

public class MyBroadcastReceiver extends BroadcastReceiver{ public void onReceive(Context context, Intent intent){ //處理廣播 }}private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equals(ACTION_NAME)){ Toast.makeText(Test.this, "處理action名字相對應的廣播", 200); } } };

5. 注冊廣播接收器類

5.1 方式一: 配置文件注冊(靜態注冊)

<receiver android:name="com.lizi.MyBroadcastReceiver"> <!--priority指定當前receiver的優先級, 值是0-1000, 越大越好 --> <intent-filter android:priority="500"> <action android:name="com.lizi.mybroadcastreceiver"/> </intent-filter> </receiver>

5.2 方式二: 硬編碼注冊(動態注冊)

public void registerBoradcastReceiver(){ IntentFilter myIntentFilter = new IntentFilter(); myIntentFilter.addAction(ACTION_NAME); //注冊廣播 registerReceiver(mBroadcastReceiver, myIntentFilter); }

5.3 區別靜態注冊與動態注冊

這里寫圖片描述

5.4 有序廣播和無序廣播

發送一般廣播

context.sendBroadCast(Intent intent)

發送有序廣播

context.sendOrderedBroadcast(Intent intent)

區別

這里寫圖片描述

6. 觸發響應

mBtnMsgEvent = new Button(this); mBtnMsgEvent.setText("發送廣播"); mBtnMsgEvent.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent mIntent = new Intent(ACTION_NAME); mIntent.putExtra("yaner", "發送廣播,相當于在這里傳送數據"); //發送廣播 sendBroadcast(mIntent); } });

7. 完整源碼

package my.yaner;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.LinearLayout;import android.widget.Toast;public class Test extends Activity{ private final String ACTION_NAME = "發送廣播"; private Button mBtnMsgEvent = null; protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); //注冊廣播 registerBoradcastReceiver(); LinearLayout mLinearLayout = new LinearLayout(this); mBtnMsgEvent = new Button(this); mBtnMsgEvent.setText("發送廣播"); mLinearLayout.addView(mBtnMsgEvent); setContentView(mLinearLayout); mBtnMsgEvent.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent mIntent = new Intent(ACTION_NAME); mIntent.putExtra("yaner", "發送廣播,相當于在這里傳送數據"); //發送廣播 sendBroadcast(mIntent); } }); } private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if(action.equals(ACTION_NAME)){ Toast.makeText(Test.this, "處理action名字相對應的廣播", 200); } } }; public void registerBoradcastReceiver(){ IntentFilter myIntentFilter = new IntentFilter(); myIntentFilter.addAction(ACTION_NAME); //注冊廣播 registerReceiver(mBroadcastReceiver, myIntentFilter); }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 卢龙县| 凯里市| 新兴县| 松潘县| 万源市| 潼关县| 额尔古纳市| 崇义县| 保靖县| 灵山县| 新干县| 徐闻县| 利津县| 兴安盟| 如皋市| 成都市| 陕西省| 衡阳县| 张家港市| 潼关县| 河曲县| 高要市| 武冈市| 海安县| 尼勒克县| 兴海县| 屏山县| 庆城县| 吴川市| 陵川县| 武平县| 通州区| 锦州市| 三门县| 资中县| 柳河县| 固镇县| 南昌市| 石河子市| 宕昌县| 宁远县|