又爽又高潮的BB视频免费看,久久99精品久久久久子伦,男女性杂交内射女BBWXZ,新激情五月天

18842388900

網(wǎng)站建設(shè) APP開(kāi)發(fā) 小程序

Article/文章

記錄成長(zhǎng)點(diǎn)滴 分享您我感悟

您當(dāng)前位置>首頁(yè) > 知識(shí) > 網(wǎng)站建設(shè)

Android的四個(gè)主要組件BroadcastReceiver廣播接收器

當(dāng)系統(tǒng)收到短消息時(shí),它將發(fā)送一個(gè)動(dòng)作名為android.provier.Telephony.SMS_RECEIVED的廣播Intent。 Intent存儲(chǔ)接收的短消息內(nèi)容,并且可以使用名稱“pdus”從Intent獲取短消息內(nèi)容。

Pdus是一個(gè)對(duì)象類型數(shù)組,每個(gè)對(duì)象都是一個(gè)byte []字節(jié)數(shù)組,每個(gè)項(xiàng)目都是一條文本消息。

Object [] pduses=(Object [])intent.getExtras()。get('pdus');

for(Objectpdus: pduses){

byte[] pdusmessage=(byte[])pdus;

SmsMessage sms=SmsMessage.createFromPdu(pdusmessage);

Stringmobile=sms.getOriginatingAddress(); //發(fā)送手機(jī)號(hào)碼

Stringcontent=sms.getMessageBody(); //短信內(nèi)容

日期日期=new日期(sms.getTimestampMillis());

SimpleDateFormat format=newSimpleDateFormat('yyyy-MM-dd HH: mm: ss');

Stringtime=format.format(date); //獲取發(fā)送時(shí)間

}

廣播接收器(BroadcastReceiver)用于接收廣播Intent。通過(guò)調(diào)用Context.sendBroadcast(),Context.sendOrdeedBroadcast(),context.sendStickyBroadcast()來(lái)發(fā)送廣播Intent,通常廣播Intent可以訂閱此Intent。由多個(gè)廣播接收器接收,此功能類似于JMS中的主題消息接收器。為了實(shí)現(xiàn)廣播接收器,該方法如下:

第一步是繼承BroadcastReceiver并覆蓋onReceive()方法

public classSMSBroadcastReceiverextendsBroadcastReceiver {

@override

public voidonReceive(Context context,Intent intent){

}

}

onReceive的生命周期為10秒,因此內(nèi)部操作不能超過(guò)10秒

第二步是訂閱感興趣的廣播Intent。有兩種訂閱方式:

第一個(gè):使用代碼訂閱

SMSBroadcastReceiver receiver=new SMSBroadcastReceiver();

IntentFilter filter=newIntentFilter();

filter.addAction( 'android.provider.Telephony.SMS_RECEIVED');

context.registerReceiver(接收器,過(guò)濾器);

第二:在AndroidManifest.xml文件中的節(jié)點(diǎn)中訂閱

'.SMSBroadcastReceiver' >

'android.provider.Telephony.SMS_RECEIVED'/>

第三步是增加接收短信的能力

'android.permission.RECEIVE_SMS' >

廣播分為兩種不同的類型,“普通廣播”和“有序廣播”。普通廣播是完全異步的,并且可以由所有接收者同時(shí)(邏輯上)接收。消息傳遞的效率相對(duì)較高,但缺點(diǎn)是接收器不能將處理結(jié)果傳遞給下一個(gè)接收器而不能終止廣播。意圖傳播;但是,有序廣播符合接收者聲明的優(yōu)先級(jí)(在intent-filter元素的android: priority屬性中聲明,數(shù)據(jù)優(yōu)先級(jí)越高,值范圍:-1000到1000也可以調(diào)用IntentFilter對(duì)象setPriority()已設(shè)置),接收器依次接收廣播。例如,如果A的級(jí)別高于B并且B的級(jí)別高于C,則首先將廣播發(fā)送到A,然后發(fā)送到B,最后發(fā)送到C.在A廣播之后,可以將數(shù)據(jù)存儲(chǔ)在廣播。當(dāng)廣播被發(fā)送到B時(shí),B可以從廣播中獲得存儲(chǔ)在A中的數(shù)據(jù)。

Context.sendBroadcast()發(fā)送普通廣播,所有訂閱者都可以訪問(wèn)它并進(jìn)行處理。

Context.sendOrderedBroadcast()發(fā)送有序廣播。系統(tǒng)根據(jù)接收器聲明的優(yōu)先級(jí)逐個(gè)執(zhí)行接收器。如果前一個(gè)接收者接收到廣播,則前一個(gè)接收者有權(quán)終止廣播(BroadcastReceiver.abortBroadcast())。終止后,后續(xù)收件人將無(wú)法再獲得廣播。對(duì)于有序廣播,前一個(gè)接收者可以將處理結(jié)果存儲(chǔ)在廣播Intent中,然后將其傳遞給下一個(gè)接收者。

sendStickyBroadcast()表示如果發(fā)送廣播則執(zhí)行registerReceiver(BroadcastReceiver,IntentFilter)。這種方法仍然可以接受。換句話說(shuō),在ReceiverActivity中,Recevier是通過(guò)代碼注冊(cè)的,而不是在Manifest中注冊(cè)的。 sendStickyBroadcast發(fā)布的最后一個(gè)Intent將被保留,并在下次Recevier激活時(shí)被接受。需要添加BROADCAST_STICKY權(quán)限,否則會(huì)拋出SecurityException

接收電池電量變化廣播:

'android.intent.action.BATTERY_CHANGED'/>

接收啟動(dòng)匯海廣播

'android.intent.action.BOOT_COMPLETED'/>

并制作許可聲明

在Android中,程序(響應(yīng))的響應(yīng)由兩個(gè)系統(tǒng)服務(wù)Activity Manager和Window Manager監(jiān)視。當(dāng)BroadcastReceiver在10秒內(nèi)未執(zhí)行時(shí),Android將認(rèn)為該程序不存在。響應(yīng),因此您無(wú)法在BroadcastReceiver中執(zhí)行一些耗時(shí)的操作,否則將彈出ANR(應(yīng)用程序無(wú)響應(yīng))對(duì)話框。如果您需要完成一項(xiàng)相對(duì)耗時(shí)的工作,您應(yīng)該通過(guò)向服務(wù)發(fā)送一個(gè)Intent來(lái)完成此操作,該Intent由Service完成,而不是使用子線程,因?yàn)锽roadcastReceiver的生命周期很短(一個(gè)實(shí)例)在執(zhí)行onReceive()之后的BroadcastReceiver。將被銷毀),子線程可能在它結(jié)束之前不結(jié)束B(niǎo)roadcastReceiver。如果BroadcastReceiver完成且其主機(jī)進(jìn)程仍在運(yùn)行,則子線程將繼續(xù)執(zhí)行。但是,當(dāng)系統(tǒng)需要內(nèi)部時(shí),主機(jī)進(jìn)程現(xiàn)在很容易被殺死。因?yàn)樗鼘儆诳者M(jìn)程(沒(méi)有任何活動(dòng)組件的進(jìn)程)。

每次廣播消息到達(dá)時(shí),都會(huì)創(chuàng)建一個(gè)BroadcastReceiver實(shí)例來(lái)執(zhí)行onReceive()方法。

例如:

[java]查看plaincopy

Packagecom.king.sms;

importjava.text.SimpleDateFormat;

importjava.util.Date;

importandroid.content.BroadcastReceiver;

Importandroid.content.Context;

importandroid.content.Intent;

importandroid.telephony.SmsMessage;

publicclassSMSBroadcastReceiverextendsBroadcastReceiver {

@override

publicvoidonReceive(Contextcontext,Intentintent){

對(duì)象[] pduses=(對(duì)象[])intent.getExtras()得到( '的PDU');

對(duì)于(Objectpdus: pduses){

字節(jié)[] pdusmessage=(字節(jié)[])的PDU;

SmsMessagesms=SmsMessage.createFromPdu(pdusmessage);

Stringmobile=sms.getOriginatingAddress(); //發(fā)送手機(jī)號(hào)碼

Stringcontent=sms.getMessageBody(); //短信內(nèi)容

Datedate=newDate(sms.getTimestampMillis());

SimpleDateFormatformat=newSimpleDateFormat('yyyy-MM-ddHH: mm: ss');

Stringtime=format.format(date); //獲取發(fā)送時(shí)間

}

}

}

//AndroidManifest.xml

[java]查看plaincopy

網(wǎng)站建設(shè),小程序開(kāi)發(fā),小程序制作,微信小程序開(kāi)發(fā),公眾號(hào)開(kāi)發(fā),微信公眾號(hào)開(kāi)發(fā),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站優(yōu)化,網(wǎng)站排名,網(wǎng)站設(shè)計(jì),微信小程序設(shè)計(jì),小程序定制,微信小程序定制

相關(guān)案例查看更多

免费A级毛片无码A| 美女露100%双奶头无遮挡免费| 麻豆国产精品va在线观看| 人人澡人人妻人人爽人人蜜桃| 亚洲综合在线另类色区奇米| 全黄H全肉边做边吃奶视频 |