亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android中的廣播(BroadCast)詳細介紹

2020-04-11 11:38:36
字體:
來源:轉載
供稿:網友

什么是廣播

在Android中,Broadcast是一種廣泛運用的在應用程序之間傳輸信息的機制。我們拿廣播電臺來做個比方。我們平常使用收音機收音是這樣的:許許多多不同的廣播電臺通過特定的頻率來發送他們的內容,而我們用戶只需要將頻率調成和廣播電臺的一樣就可以收聽他們的內容了。Android中的廣播機制就和這個差不多的道理。

電臺發送的內容是語音,而在Android中我們要發送的廣播內容是一個Intent。這個Intent中可以攜帶我們要傳送的數據。

電臺通過大功率的發射器發送內容,而在Android中則是通過sendBroadcast這個方法來發送(很形象的名字吧)。      

用戶通過調整到具體的電臺頻率接受電臺的內容。而在Android中要接受廣播中的內容則是通過注冊一個BroadCastReceiver來接收的。只有發送廣播的action和接收廣播的action相同,接受者才能接受這個廣播。

廣播有什么用

其實,在什么是廣播的第一句就已經說明了廣播有什么用了。對了,籠統一點講就是用來傳輸數據的。具體一點說就是:     1.實現了不同的程序之間的數據傳輸與共享,因為只要是和發送廣播的action相同的接受者都能接受這個廣播。典型的應用就是android自帶的短信,電話等等廣播,只要我們實現了他們的action的廣播,那么我們就能接收他們的數據了,以便做出一些處理。比如說攔截系統短信,攔截騷擾電話等等 2.起到了一個通知的作用,比如在service中要通知主程序,更新主程序的UI等。因為service是沒有界面的,所以不能直接獲得主程序中的控件,這樣我們就只能在主程序中實現一個廣播接受者專門用來接受service發過來的數據和通知了。

實現廣播

現在我們就來實現一個簡單的廣播程序。Android提供了兩種注冊廣播接受者的形式,分別是在程序中動態注冊和在xml中指定。他們之間的區別就是作用的范圍不同,程序動態注冊的接收者只在程序運行過程中有效,而在xml注冊的接收者不管你的程序有沒有啟動有會起作用。首先介紹在程序中動態注冊的方式。

動態注冊方式

我們在程序中設置了三個按鈕,分別是“注冊廣播”,“取消注冊”和“發送廣播”。然后每個按鈕設置點擊事件來完成廣播的演示。

最簡單的項目的建立過程和按鈕事件的建立我再這里就不羅嗦了,不會的可以下載下面的DEMO源碼查看。直接看三個按鈕的實現方式。

首先是注冊廣播的按鈕事件代碼:

復制代碼 代碼如下:

private ReceiveBroadCast receiveBroadCast;  //廣播實例
 
public class RegisteLinster implements OnClickListener
{
        @Override
        public void onClick(View view)
        {
            // 注冊廣播接收
            receiveBroadCast = new ReceiveBroadCast();
            IntentFilter filter = new IntentFilter();
            filter.addAction(flag);    //只有持有相同的action的接受者才能接收此廣播
            registerReceiver(receiveBroadCast, filter);
        }
}
 
public class ReceiveBroadCast extends BroadcastReceiver
{
 
        @Override
        public void onReceive(Context context, Intent intent)
        {
            //得到廣播中得到的數據,并顯示出來
            String message = intent.getStringExtra("data");
            txtShow.setText(message);
        }
 
}

首先我們實現了一個ReceiveBroadCast 類,它繼承了BroadcastReceiver并實現了其中的onReceive方法,這樣當這個廣播被接收的時候就會執行這個方法。注意我們在注冊廣播的時候使用了filter.addAction方法添加了一個過濾器。如果沒有這一句,就相當于廣播電臺沒有告訴咱們收音機用戶接收的頻率,就不好收聽這個廣播了。

再來看看如何取消注冊,是的程序不再接收這個類型的廣播了。

復制代碼 代碼如下:

public class UnregisteLinster implements OnClickListener
{
 
        @Override
        public void onClick(View arg0)
        {
            unregisterReceiver(receiveBroadCast);
        }
}

怎么樣?是不是超級簡單的啊,就是將我們上面的那個廣播類的實例傳進去就行了?,F在注冊,取消注冊都好了,就剩下如何發送了??创a:

復制代碼 代碼如下:

public class SendBroadCastListener implements OnClickListener
{
        @Override
        public void onClick(View arg0)
        {
            Intent intent = new Intent();  //Itent就是我們要發送的內容
            intent.putExtra("data", "this is data from broadcast "+Calendar.getInstance().get(Calendar.SECOND)); 
            intent.setAction(flag);   //設置你這個廣播的action,只有和這個action一樣的接受者才能接受者才能接收廣播
            sendBroadcast(intent);   //發送廣播
        }
}

每一句都注釋了的,就不要我再講了吧。一看就明白了?,F在,運行程序看看效果吧。先注冊一下,然后每發送一次廣播上面的文字就會變化一次,表明已經接收到了廣播了。按取消注冊后你可以發現再按發送按鈕已經接收不到廣播了。

配置文件方式

配置和動態注冊的區別在上面已經說了,這種方式適合你的程序需要長期的監測某個廣播的情形,比如監測用戶的短信。注冊方式比較簡單,相當于上面的代碼只要接收的那部分就行了。不過要注意的是通過配置文件這種方式注冊廣播需要在單獨的一個類中繼承BroadReceiver,內部類是沒有用的。所以我們新建了一個broadCastReceiveByXml類并繼承了BroadReceive。代碼如下:

復制代碼 代碼如下:

public class broadCastReceiveByXml extends BroadcastReceiver
{
 
    @Override
    public void onReceive(Context arg0, Intent arg1)
    {
        Log.d("qlf", "broadcast receive by xml");    //因為不在主UI下,不好使用控件,所以我們這里打印到LOG里面查看效果
    }
 
}

然后在AndroidManifest中的<activity></activity>節點之后我們添加一下代碼:

復制代碼 代碼如下:

<receiver android:name="com.qlf.broadCast.broadCastReceiveByXml">
    <intent-filter>
        <action android:name="com.qlf.broadCastFlag">
        </action>
    </intent-filter>
</receiver>

receiver中的android:name就是我們在程序中的那個接收廣播的類。下面的intent-filter和我們講到的功能類似,而這個action就是上面的那個flag啦?,F在我們運行程序,發現同樣可以實現上面的功能。運行的結果如下:

除了使用我們自己發送廣播,android也內置了許多廣播。比如我們上面提到的來了消息的時候android會發送一個action名為“android.provider.Telephony.SMS_RECEIVED”的廣播,這個時候如果我們想要接受這個廣播只要將配置文件中的那個action設置為上面這個字符串就能接收到消息信息了。android包括了許多其他的廣播action,有興趣的同學到網上搜搜就有了。這里就不再舉例了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本精品一区二区三区在线播放视频| 日韩成人在线视频观看| 精品无人区乱码1区2区3区在线| 2019中文字幕在线观看| 国产日韩欧美在线视频观看| 成人免费看片视频| 九九热这里只有精品免费看| 插插插亚洲综合网| 欧美国产日韩二区| 国产亚洲精品va在线观看| 欧美另类极品videosbestfree| 久久久成人精品| 成人欧美在线视频| 日韩免费av片在线观看| 中文字幕亚洲欧美日韩2019| 欧美成人一二三| 久久久国产精品视频| 欧美在线一区二区视频| 亚洲欧美国产制服动漫| 国模吧一区二区三区| 97涩涩爰在线观看亚洲| 亲子乱一区二区三区电影| 精品亚洲一区二区三区| 欧美日韩美女在线| 日韩在线视频网| 日韩欧美成人精品| 91欧美激情另类亚洲| 亚洲欧洲日本专区| 亚洲黄色在线观看| 色综合老司机第九色激情| 91高清视频免费| 色婷婷综合久久久久中文字幕1| 日韩视频免费看| 亚洲男人天堂网站| 日韩av中文字幕在线免费观看| 亚洲精品欧美一区二区三区| 欧美日韩国产综合视频在线观看中文| 欧美日韩一区二区精品| 欧美成人亚洲成人| 欧美性videos高清精品| 成人国产精品一区| 亚洲国产成人一区| 国产精品日韩专区| 91精品久久久久久久久青青| 日韩欧美视频一区二区三区| 超碰精品一区二区三区乱码| 亚洲精品久久久一区二区三区| 日韩中文字幕在线观看| 久久久久国色av免费观看性色| 国产精品久久国产精品99gif| 秋霞成人午夜鲁丝一区二区三区| 欧美成人性生活| 日韩免费在线电影| www.日韩系列| 精品夜色国产国偷在线| 欧美野外猛男的大粗鳮| 日韩精品在线看| 98精品国产自产在线观看| 欧美大尺度在线观看| 91香蕉国产在线观看| 一区二区三区视频免费| 亚洲欧美在线免费| 久久精视频免费在线久久完整在线看| 欧美激情综合亚洲一二区| 日韩三级影视基地| 久久视频在线看| 国产+人+亚洲| 亚洲精品电影网| 久久久久久国产三级电影| 亚洲美女激情视频| 亚洲视频国产视频| x99av成人免费| 国内揄拍国内精品| 美女扒开尿口让男人操亚洲视频网站| 欧美电影免费观看电视剧大全| 中日韩美女免费视频网站在线观看| 久久99精品久久久久久青青91| 欧美激情综合色| www.亚洲成人| 国产欧美精品一区二区三区介绍| 亚洲日本欧美中文幕| 欧美最猛性xxxxx免费| 国产精品久久中文| 亚洲最大福利网| 亚洲日本欧美中文幕| 亚洲淫片在线视频| 亚洲级视频在线观看免费1级| 亚洲一区二区三区xxx视频| 日韩久久免费电影| 国产精品视频公开费视频| 97人人模人人爽人人喊中文字| 国产女精品视频网站免费| 国产精品久久国产精品99gif| 国产精品扒开腿做爽爽爽视频| 亚洲新中文字幕| 国产精品久久久久7777婷婷| 亚洲人成电影在线| 日韩经典中文字幕| 欧美俄罗斯性视频| 亚洲精品一区二区网址| 国产激情视频一区| 欧美理论在线观看| 欧美日韩国产综合视频在线观看中文| 美女999久久久精品视频| 国产精品扒开腿做爽爽爽视频| 自拍亚洲一区欧美另类| 久久精品视频va| 日韩精品免费在线视频| 日韩少妇与小伙激情| 久久亚洲欧美日韩精品专区| 久久成人一区二区| 中文字幕在线成人| 国产精品流白浆视频| 欧美一区二区三区免费观看| 欧美精品在线播放| 国产www精品| 成人免费黄色网| 亚洲奶大毛多的老太婆| 国产精品热视频| 亚洲嫩模很污视频| 日韩av在线网址| 欧美激情图片区| 日韩av成人在线观看| 中文字幕日韩在线播放| 国产精品视频yy9099| 国产精彩精品视频| 国产精品久久久久久久久久久久| 久久久国产精品亚洲一区| 日韩精品久久久久| 亚洲精品理论电影| 最新国产成人av网站网址麻豆| 岛国av在线不卡| 日韩美女视频免费在线观看| 亚洲欧洲在线播放| 色偷偷91综合久久噜噜| 亚洲区中文字幕| 欧美午夜精品在线| 中文字幕免费国产精品| 久久电影一区二区| 77777少妇光屁股久久一区| 精品一区电影国产| 91夜夜揉人人捏人人添红杏| 操人视频在线观看欧美| 久久在线免费视频| 亚洲电影天堂av| 欧美日韩亚洲视频| 亚洲精品福利视频| 亚洲第一福利网| 久久深夜福利免费观看| 亚洲剧情一区二区| 日韩国产精品亚洲а∨天堂免| 精品福利一区二区| 国产一区二区激情| 在线电影av不卡网址| 亚洲一区二区国产| 欧美成人黑人xx视频免费观看| 日韩一区二区久久久| 国产精品青草久久久久福利99| 丝袜情趣国产精品| 亚洲女人初尝黑人巨大| 国产精品96久久久久久| 亚洲最大成人在线| 亚洲第一福利网站| 性欧美暴力猛交69hd|