1、如果要做耗時操作,應該通過發(fā)送Intent給Service,讓Service來完成。廣播不能使用子線程來解決,因為BroadcastReceiver的生命周期很短,子線程還沒結(jié)束,Broadcast可能就結(jié)束了。
創(chuàng)新互聯(lián)主營故城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā),故城h5成都微信小程序搭建,故城網(wǎng)站營銷推廣歡迎故城等地區(qū)企業(yè)咨詢
2、無序廣播存儲在mParallelBroadcasts中, 系統(tǒng)會遍歷這個集合并將其中的廣播發(fā)送給他們所有的接收者, 具體的發(fā)送過程是通過deliverToRegisteredReceiverLocked()方法實現(xiàn)。
3、在這里我們創(chuàng)建一個繼承于BroadcastReceiver的類LocalReceiver。
4、即在自己的應用程序中實現(xiàn)BroadcastReceiver來監(jiān)聽和響應廣播的Intent。
5、Intent i = new Intent(“android.intent.action.BOOT_COMPLETED”);sendBroadcast(i);這樣,廣播就發(fā)出去了,然后是接收。
6、④:sendBroadcast(myIntent);——【發(fā)送廣播】接收廣播 Android在接收廣播的方法是注冊一個廣播接收器 registerReceiver(MyReceiver,IntentFilter)。①:首先創(chuàng)建MyReceiver類(類名自定義) 繼承 BroadcastReceiver類。
第一種方式:在Manifest.xml中注冊廣播,是一種比較推薦的方法,因為它不需要手動注銷廣播(如果廣播未注銷,程序退出時可能會出錯)。
廣播注冊,對于應用開發(fā)來說,往往是在Activity/Service中調(diào)用 registerReceiver() 方法,而Activity或Service都間接繼承于Context抽象類,真正干活是交給ContextImpl類。
靜態(tài)注冊:在清單文件里直接注冊,從app開啟到app銷毀,一直在接收廣播,接收廣播時間長,但是接收廣播的優(yōu)先級低于動態(tài)注冊廣播。
第一種方式:在Manifest.xml中注冊廣播,是一種比較推薦的方法,因為它不需要手動注銷廣播(如果廣播未注銷,程序退出時可能會出錯)。
Android中最典型的廣播器是Tel 來電和短信通知。以下代碼是我自己寫的一個類,我extends了系統(tǒng)API的BroadcastReceiver(相關(guān)知識請專門搜一下Android短信接收)這實際上說明我向系統(tǒng)注冊了我對短信感興趣。
廣播(Broadcast)機制用于進程/線程間通信,廣播分為廣播發(fā)送和廣播接收兩個過程,其中廣播接收者BroadcastReceiver便是Android四大組件之一。