黑馬程序員android廣播broad耗時(shí)問(wèn)題_第1頁(yè)
黑馬程序員android廣播broad耗時(shí)問(wèn)題_第2頁(yè)
黑馬程序員android廣播broad耗時(shí)問(wèn)題_第3頁(yè)
黑馬程序員android廣播broad耗時(shí)問(wèn)題_第4頁(yè)
黑馬程序員android廣播broad耗時(shí)問(wèn)題_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

定義類繼承BroadcastReceiveronReceive有序廣播中,如果要控制多個(gè)接收者之間的順序,可在<intent-filter>priority屬性,0,值越大,優(yōu)先級(jí)越高;BroadcastReceiver除了在文件中,也可以在代碼中,使用方法<!--配置廣播接收者,--廣播接收者的方4大組件中,只有廣播接收者是一個(gè)非常特殊的組件,其他3大組件都需要在文件中注廣播接收者,有2中方式:文件與代碼方式;文件廣播接收者,只要應(yīng)用程序被部署到上,就立刻生效,不管進(jìn)程是否//廣播接收者privateclassInnerReceiverextendsBroadcastReceiver{publicvoidonReceive(Contextcontext,Intentintent){Stringphone=getResu }} publicvoidonCreate()//==服務(wù)啟動(dòng)時(shí), 廣播接收者==innerReceiver=newInnerReceiver();IntentFilterfilter=new}//銷毀publicvoidonDestroy()//==服務(wù)停止時(shí),移除廣播接收者==innerReceiver=null;}Intent確定廣播類型,可攜帶數(shù)據(jù),所有接收者都可以接收到數(shù)據(jù),數(shù)據(jù)不能IntentintentnewIntent("com.itheima.broadcast.TESTintentfilter //包含未啟動(dòng)的過(guò)的應(yīng)用(也intent.putExtra("data","這是來(lái)著廣播發(fā)送者發(fā)來(lái)的賀電"); //廣播發(fā)送者intent中的數(shù)sendBroadcast(intent,null); //發(fā)送無(wú)序廣播,異步獲取數(shù)publicclassAReceiverextendsBroadcastReceiverpublicvoidonReceive(Contextcontext,Intentintent){System.out.println("AReceiver:"+intent.getStringExtra("data"));}}<receiver" 的廣播-->publicvoidonReceive(Contextcontext,Intentintent){Log.i(TAG,"打 Stringphone=this.getResuif("2008".equals(phone))//==打開防盜功能界面IntentsafeIntent=newIntent(context,LostFindActivity.class); //使Activity //中斷廣播 //把設(shè)為null,就沒(méi)有}}sendOrderedBroadcast()Intent確定廣播類型,攜帶數(shù)據(jù),Intent可以指定一個(gè)自己的廣播接收者,IntentintentnewIntent("com.itheima.broadcast.TESTintentfilter //包含未啟動(dòng)的過(guò)的應(yīng)用(也intent.putExtra("data","這是來(lái)著廣播發(fā)送者發(fā)來(lái)的賀電"); //廣播發(fā)送者的intent中的數(shù)//==有序廣播時(shí),傳遞的數(shù)據(jù)可修改==Bundlebundle=newBundle();bundle.putString("name","");bundle.putInt("age",22);/*定義權(quán)限,要求接收者,要有com.itheima.permission.broadcast.RECEIVE才能接收;*配置了最后接收者,Creceiver,無(wú)論怎么弄,我都可以收到廣播,而且我不要配置,限傳遞了數(shù)據(jù)1,“MainActivitybundle CReceiver(),null,1,"MainActivity",publicvoidonReceive(Contextcontext,Intentintent){System.out.println("AReceiver:"+intent.getStringExtra("data"));Bundlebundle //設(shè)置為trueStringmessage=String.format("%s:%s:%s,%s",getResultCode(),getResuata(),bundle.getString("name"),bundle.getInt("age")); //如果優(yōu)先級(jí)高于其他接收者,將打印//==修改有序發(fā)送者,發(fā)來(lái)的數(shù)據(jù)==bundle.putString("name","");bundle.putInt("age",222);this.setResult(2,"AReceiver",bundle);//==修改Intent中的數(shù)據(jù),無(wú)效==intent.putExtra("dataAReceiver修改了數(shù)據(jù)");//this.abortBroadcast(); //中斷,比它優(yōu)先級(jí)低的接收者,}<receiverandroid:name="com.itheima.a.AReceiver"修改撥出去的 限 在onReceive方法中使用getResuata()和setResuata()方法獲取和設(shè)置publicclassCallReceiverextendsBroadcastReceiver

publicvoidonReceive(ContextcontextIntentintent//獲取撥打號(hào)碼Stringphone //獲取號(hào)碼")){ //號(hào)碼前加 ata("17951"+ //修碼,此數(shù)據(jù)不是Intent中過(guò)}}}<!--配置權(quán)限,可處理打出 <!--配置廣播接收者,--Android系統(tǒng)在收到 onReceive方法內(nèi)部調(diào)用IntentgetExtras()get()pdus字段,得到一Object[]byte[];Android系統(tǒng)中收到是一個(gè)有序通知,我們?nèi)缧瑁梢耘渲幂^priority,收到信息進(jìn)行判斷是否abortBroadcast();publicvoidonReceive(Contextcontext,Intentintent){//==通過(guò)意圖獲取信息,返回?cái)?shù)組類型Object[]pdus=(Object[])for(Objectpdu:pdus)取內(nèi)}

Stringnumber //發(fā)送地址Datedatenew //接收時(shí)間Stringcontent //消息內(nèi)容if //中斷廣播}<!--接收權(quán)限--<!--優(yōu)先級(jí),值越多,優(yōu)先級(jí)越高,默認(rèn)為01.5Activity的主線不能進(jìn)行耗時(shí)的操作,因?yàn)闀?huì)阻塞頁(yè)面刷新以及用戶操作如果在新線做,也不太合適,因?yàn)槿绻鸄ctivity被切換到(stop狀態(tài)),很有onReceive()方法是運(yùn)行在主線的,如果進(jìn)行耗時(shí)操作,會(huì)阻塞界面刷新和用

如果在新線做,也不行,因?yàn)锽roadcastReceiver的生命周期非常短暫,在廣,@authorzhaoyu2013-7-20上午publicclassMainActivityextendsActivityprivateTextViewprivateHandlerhandler=newprivateintprotectedvoidonCreate(BundlesavedInstanceState){numTV=(TextView)}publicvoidstart(Viewv)for(inti=0;i<100;i++){try{//==這種方式,值已經(jīng)改變。但是主線程,沒(méi)有來(lái)得及刷新界面,代碼的處理,所以界面一直顯示0,一直到循環(huán)結(jié)束,才顯示最終結(jié)果==numTV.setText(i+"");}catch(InterruptedExceptione){}}//==使用新線程,將耗時(shí)的操作放入新線程,如

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論