• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            broadcastreceiver(關(guān)于broadcastreceiver)

            更新時間:2023-03-01 21:28:40 閱讀: 評論:0

            broadcast receiver是什么意思

            broadcast receiver
            廣播接收機
            雙語對照
            詞典結(jié)果:
            broadcast receiver[英][ˈbrɔ:dkɑ:st riˈsi:və][美][ˈbrɔdˌkæst rɪˈsivɚ]
            廣播收音機;
            例句:

            It is also the lowest priced HD Radio broadcast receiver chip in the industry.
            它也是最低價的高清無線廣播接收機芯片的產(chǎn)業(yè)。

            BroadcastReceiver詳解(基礎(chǔ)篇)

            Broadcast (廣播)是一種廣泛運用的應(yīng)用程序之間傳輸信息的機制,而 BroadcastReceiver (廣播接收器)則是用于接收來自系統(tǒng)和應(yīng)用的廣播對并對其進行響應(yīng)的組件,Android中我們要發(fā)送的廣播內(nèi)容是一個 Intent ,這個 Intent 中可以攜帶我們要傳送的數(shù)據(jù)

            創(chuàng)建一個廣播接收器非常簡單,只需要繼承 BroadcastReceiver ,并重寫 onReceive() 即可

            BroadcastReceiver 也是四大組件之一,所以我們也需要對 BroadcastReceiver 進行注冊,不同于其他四大組件, BroadcastReceiver 有兩種注冊方式,分別是 靜態(tài)注冊 動態(tài)注冊

            靜態(tài)注冊

            當(dāng)我們的應(yīng)用首次啟動的時候,系統(tǒng)會自動實例化我們靜態(tài)注冊的 BroadcastReceiver ,然后將這個 BroadcastReceiver 注冊到系統(tǒng)中,系統(tǒng)接收到廣播之后,就會做出相應(yīng)的判斷,調(diào)用 onReceive() 方法。通過這種方式注冊的廣播,即使我們的應(yīng)用被銷毀,依然能收到廣播。 這里要注意的是,我們的應(yīng)用一定要被啟動過 ,如果沒有被啟動可能就無法接收到廣播,可以參考文章 Android應(yīng)用在未啟動的情況下無法收到指定廣播的問題總結(jié)

            正是因為靜態(tài)注冊耗電、占內(nèi)存、不受程序生命周期影響,所以Google在Android 8.0上禁止大部分廣播的靜態(tài)注冊,可以參考官文文檔 Android 8.0 功能和 API

            動態(tài)注冊

            通過動態(tài)注冊的廣播, BroadcastReceiver 的生命周期跟隨Activity的生命周期

            注意: 要在 Activity 的 onPau() 中 unRegeisterReceiver() ,否則會引起內(nèi)存泄漏。比較推薦 onResume() 中去注冊廣播,在 onPau() 中去注銷廣播。因為在內(nèi)存資源比較吃緊的情況下,可能我們的 Activity 執(zhí)行完 onPau() 之后就被銷毀,這時候 Activity 的 onStop() 和 onDestory() 方法就不會執(zhí)行了

            BroadcastReceiver注冊完之后,這個 BroadcastReceiver 就能夠接收響應(yīng)的廣播,下面我們來說說如何發(fā)送一條廣播

            普通廣播(Normal Broadcast)

            普通廣播完全是異步的,通過 context.ndBroadcast() 方法發(fā)送,消息傳遞效率比較高,但所有接收器的執(zhí)行順序不確定。缺點是接收者不能將處理結(jié)果傳遞給下一個接收者,并且無法終止廣播的傳播

            有序廣播(Ordered Broadcast)

            有序廣播是通過 context.ndOrderedBroadcast() 方法發(fā)送,所有的廣播者按照優(yōu)先級依次執(zhí)行,廣播接收器的優(yōu)先級通過 receiver 的 intent-filter 中的 android:priority 屬性來設(shè)置,數(shù)值越大優(yōu)先級越高。當(dāng)廣播接收器接收到廣播后,可以使用 tResult() 方法把結(jié)果傳遞給下一個接收者,通過 getResult() 方法獲取上一個接收者傳遞過來的結(jié)果,并可以通過 abortBroadcast() 方法丟棄該廣播,使該廣播不再傳遞給下一個接收者

            粘性廣播(Sticky Broadcast)

            粘性廣播通過 context.ndStickBroadcast() 方法來發(fā)送,用此方法發(fā)送的廣播會一直滯留,當(dāng)有匹配此廣播的接收器被注冊后,該廣播接收器就會收到此廣播。使用此廣播時,需要獲得 BROADCAST_STICKY 權(quán)限

            由于在Android5.0 & API 21中已經(jīng)失效,所以不建議使用。

            本地廣播(Local Broadcast)

            前三種廣播都是全局廣播,所有應(yīng)用都可以接收到,這樣就帶來安全隱患,而本地廣播只在進程內(nèi)傳播,可以起到保護數(shù)據(jù)安全的作用

            其實,本地廣播的使用與其十分類似,之前的步驟均是一樣的,調(diào)用者不同而已,本地廣播調(diào)用的是 LocalBroadcastManager 相關(guān)方法,全局廣播調(diào)用的是 Context 的相關(guān)方法,其方法名都是一樣的

            這里需要說一下, 使用本地廣播并沒有靜態(tài)注冊的方法 ,因為靜態(tài)注冊主要是為了讓程序在未啟動的情況下也能收到廣播,而發(fā)動本地廣播的時候,我們的程序已經(jīng)是啟動了,所以,自然是沒有靜態(tài)注冊這個方法

            Android中內(nèi)置了多個系統(tǒng)廣播,當(dāng)使用系統(tǒng)廣播時,只需要在注冊廣播接收者時定義相關(guān)的 action 即可,并不需要手動發(fā)送廣播,當(dāng)系統(tǒng)有相關(guān)操作(如開機、網(wǎng)絡(luò)狀態(tài)變化、拍照等等)時會自動進行系統(tǒng)廣播

            Android系統(tǒng)廣播 action 如下:

            本文介紹了 BroadcastReceiver 的兩種注冊方式(動態(tài)注冊、靜態(tài)注冊),四種發(fā)送方式(普通廣播、有序廣播、粘性廣播(API21廢棄)、本地廣播),以及系統(tǒng)廣播的用法。幾乎涵蓋了 BoradcastReceiver 在應(yīng)用開發(fā)過程中的所有知識,對于BroadcastReceiver原理感興趣的可以繼續(xù)看 BroadcastReceiver詳解(原理篇)


            Android BroadcastReceiver詳解

            BroadcastReceiver(廣播接收器)是Android四大組件之一,顧名思義,通過廣播的方式進行消息傳遞,其本質(zhì)是一個全局的監(jiān)聽器,可以監(jiān)聽到各種廣播,可以用來實現(xiàn)不同組件之間的通信。廣播最大的特點就是發(fā)送方并不關(guān)心接收方是否接到數(shù)據(jù),也不關(guān)心接收方是如何處理數(shù)據(jù)的,通過這樣的形式來達到接、收雙方的完全解耦合。

            又稱無序廣播,這種廣播完全是異步的,所有與廣播Intent匹配的BroadcastReceiver,都可以收到這條廣播,并且不分先后順序,視為同時收到,通過Context.ndBroadcast()方法發(fā)送。這種廣播的效率比較高,但缺點是接收器不能將處理結(jié)果傳遞給下一個接收器,并且無法在中途終止廣播。

            這是一種同步執(zhí)行的廣播,通過Context.ndOrderedBroadcast()方法發(fā)送,這種廣播發(fā)出后,通過receiver的intent-filter中的android:priority屬性來設(shè)置優(yōu)先級,優(yōu)先級從-1000~1000,數(shù)越大,優(yōu)先級越高,使用tResult()方法把結(jié)果傳遞給下一個接收者,通過getResult()方法獲取上一個接收者傳遞過來的結(jié)果,并可以通過abortBroadcast()方法丟棄該廣播,使該廣播不再傳遞給下一個接收者。

            粘性廣播通過Context.ndStickBroadcast()方法來發(fā)送,用此方法發(fā)送的廣播會一直滯留,當(dāng)有匹配此廣播的接收器被注冊后,該廣播接收器就會收到此廣播。使用此廣播時,需要獲得BROADCAST_STICKY權(quán)限。(在 android 5.0/api 21后不再推薦使用)

            Android系統(tǒng)中內(nèi)置了多個系統(tǒng)廣播,只要涉及到手機的基本操作,基本上都會發(fā)出相應(yīng)的系統(tǒng)廣播。如:開啟啟動,網(wǎng)絡(luò)狀態(tài)改變,拍照,屏幕關(guān)閉與開啟,點亮不足等等。每個系統(tǒng)廣播都具有特定的intent-filter,其中主要包括具體的action,系統(tǒng)廣播發(fā)出后,將被相應(yīng)的BroadcastReceiver接收。系統(tǒng)廣播在系統(tǒng)內(nèi)部當(dāng)特定事件發(fā)生時,有系統(tǒng)自動發(fā)出。

            以上廣播都屬于全局廣播,發(fā)出去的廣播,只要有匹配的接收者,就可以收到廣播。這樣一來會造成一些問題,一是消耗性能,二是容易引起安全性的問題,為了能夠簡單的解決這方面的問題,Android引入了一套廣播本地廣播機制,使用該機制發(fā)出的廣播只能夠在本應(yīng)用內(nèi)部進行傳遞,并且廣播接收器也只能接收來自本應(yīng)用發(fā)出的廣播。

            使用方法
            1.注冊本地廣播接收器

            2.發(fā)送本地廣播

            3.注銷本地廣播接收器

            本文用到的BroadcastReceiver

            Android 8.0(API級別26)取消大部分靜態(tài)注冊廣播,建議使用動態(tài)廣播
            https://developer.android.google.cn/about/versions/oreo/android-8.0

            Android2.1 BroadCastReceiver接收不到數(shù)據(jù),什么原因

              Android2.1 BroadCastReceiver接收不到數(shù)據(jù)的原因是因為不支持某些文件類型。具體解決方式為:
              1.藍牙默認支持所有圖片,所有視頻,所有音頻,文本類型,html,zip,excel,word,ppt,pdf等類型。
              2.使用RE文件夾,找到package/app/bluetooth,對其目錄下的AndroidManifest.xml文件的<data android:mimeType="" />,添加相應(yīng)的類型即可。
              3.具體的添加內(nèi)容為<receiver android:name=".GetData">
              <intent-filter>
              <action android:name="android.provider.Telephony.SMS_RECEIVED" />
              </intent-filter>
              </receiver>
              這一段寫到application標(biāo)記里面。

            如何注冊broadcastreceiver

              靜態(tài)注冊(在 AndroidManifest.xml 中 )

              [html] view plaincopy
              <receiver android:name=".BroadcastReceiverDemo" >
              <intent-filter>
              <action android:name="com.simware.BroadcastReceiverDemo" >
              </action>
              </intent-filter>
              </receiver>

              
              創(chuàng)建一個BroadcastReceiver

              [java] view plaincopy
              public class BroadcastReceiverDemo extends BroadcastReceiver {
              
              @Override
              public void onReceive(Context context, Intent intent) {
              // TODO Auto-generated method stub
              String msg = intent.getStringExtra("message");
              Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
              
              }
              
              }

            在onReceive方法內(nèi),可以獲取隨廣播而來的Intent中的數(shù)據(jù),這非常重要,就像無線電一樣,包含很多有用的信息。在創(chuàng)建完我們的BroadcastReceiver之后,還不能夠使它進入工作狀態(tài),我們需要為它注冊一個指定的廣播地址。沒有注冊廣播地址的BroadcastReceiver就像一個缺少選臺按鈕的收音機,雖然功能俱備,但也無法收到電臺的信號。在Manifest.xml文件中已經(jīng)注冊了BroadcastReceiver的廣播地址。

              <span style="font-size: 18px;"> </span><span style="font-size:18px;">Intent mIntent = new Intent("com.simware.BroadcastReceiverDemo");
              mIntent.putExtra("message", showText.getText().toString());
              ndBroadcast(mIntent);</span>

            本文發(fā)布于:2023-02-28 20:28:00,感謝您對本站的認可!

            本文鏈接:http://m.newhan.cn/zhishi/a/167767732083970.html

            版權(quán)聲明:本站內(nèi)容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除。

            本文word下載地址:broadcastreceiver(關(guān)于broadcastreceiver).doc

            本文 PDF 下載地址:broadcastreceiver(關(guān)于broadcastreceiver).pdf

            標(biāo)簽:broadcastreceiver
            相關(guān)文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網(wǎng)旗下知識大全大全欄目是一個全百科類寶庫! 優(yōu)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 国产成人午夜精品影院| 亚洲av专区一区| 亚洲最大在线精品| 成人无码区在线观看| 蜜桃AV抽搐高潮一区二区| 亚洲偷偷自拍码高清视频| 九九热精品视频在线免费| 一区二区三区鲁丝不卡| 国产精品久久中文字幕| 一区二区视频观看在线| 蜜桃久久精品成人无码av | 亚洲一区二区三区| 人妻少妇不满足中文字幕| gogogo高清在线播放免费| 国产精品一区中文字幕| 亚洲中文字幕一二三四五六| 亚洲无av中文字幕在线| 亚洲an日韩专区在线| 精品久久精品久久精品久久| 亚洲天堂男人的天堂在线| 国产精品成人午夜福利| 性饥渴少妇AV无码毛片| 亚洲午夜伦费影视在线观看| 激情成人综合网| 亚洲中文字幕无码av正片| 国产va免费精品观看| 国产精品自产在线观看一| 无码人妻斩一区二区三区| 欧洲尺码日本尺码专线美国又| 国产在线观看免费观看不卡| 国产午夜福利小视频在线| 亚洲AV无码专区在线播放中文| 激情综合五月| 亚洲精品一区二区妖精| 久久精品国产亚洲夜色AV网站| 欧美日产国产精品日产| 衣服被扒开强摸双乳18禁网站| 国产精品偷伦在线观看| 激情综合网五月激情五月| 亚洲精品日本一区二区| 日韩丝袜欧美人妻制服|