日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android s静态广播,重走android(3)广播 · sk600’s Studio

發布時間:2024/8/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android s静态广播,重走android(3)广播 · sk600’s Studio 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

8種機械鍵盤軸體對比

本人程序員,要買一個寫代碼的鍵盤,請問紅軸和茶軸怎么選?

廣播作為android四大組件之一,應用非常廣泛,主要通過intent這個“介質”來傳遞信息,可以完成多應用消息傳遞(即發送一個廣播,多個應用程序可以接收到)。

應用場景用于同一個app中不同進程的不同組件之間通信。

app可能同時存在有多個進程,比如定位進程、主進程等等,那么兩個進程之間通信可以采用廣播。用于不同app的組件之間的通信。

廣播種類Normal Broadcast: Context.sendBroadcast.

標準廣播,這種廣播是完全異步的,所有接受者幾乎都是在同一時間接受到廣播的,因此也是沒有順序的,所以廣播是無法截斷的Ordered Broadcast: Context.sendOrderedBroadcast.

有序廣播,這種廣播時有順序的,同一時間只有一個廣播接受者接受到廣播,并且只有當前接受者的邏輯之行完畢后才能向后傳遞,既然有先后順序,所以這種廣播是有優先級的,優先級高的接受者先接受廣播,并且可以截斷廣播阻止先后傳播。Local Broadcast: 只在app內傳播。

Broadcast Receiver

靜態注冊

靜態注冊,即在manifest文件中進行注冊,注冊后,這個receiver一直運行,即使activity死掉、甚至進程死掉后,還是能夠接收到廣播,即使這樣,靜態注冊不夠靈活。

動態注冊

動態注冊,即在使用時再注冊,動態注冊后,其生命周期與所在的activity一致,要注意,在activity的onDestroy方法中,使用unregisterReceiver方法。

廣播內部實現機制自定義BroadcastReceiver復寫onReceive()方法。

廣播發送者也想AMS進行注冊后,發送廣播。

AMS根據廣播查找符合相應條件(IntentFilter/Permission等)的BroadcastReceiver,并將廣播發送到對應的消息循環隊列中。

消息循環執行拿到此廣播,回調BroadcastReceiver的onReceive()方法。

LocalBroadcastManager

本地廣播就是一種只在app內部傳播消息的廣播,比起全局廣播,其傳遞消息的效率更高,安全性更好(不用擔心內部數據泄漏等等),使用這種廣播也無法接受到其他app對你發送的該廣播,所以不會因為廣播引起安全漏洞的問題。

LocalBroadcastManager之所以能夠實現高效和app內部通信,主要是因為其消息傳遞使用了Handler,其發送消息主要是通過Handler的sendMessage,這樣就不同于Binder機制,Handler效率比Binder快,而且只能用于app內部。

其主要靠兩個HashMap(mReceivers和mActions)和一個ArrayList(mPendingBroadcasts)。這些在源碼解析在這里。

其他BroadcastReceiver的onReceive方法不能執行耗時操作,若執行時間過長,會報錯。

BroadcastReceiver是不能開啟線程的。

總結

以上是生活随笔為你收集整理的android s静态广播,重走android(3)广播 · sk600’s Studio的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。