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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android--pendingIntent Intent

發(fā)布時(shí)間:2023/12/18 Android 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android--pendingIntent Intent 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

PendingIntent

pendingIntent字面意義:等待的,未決定的Intent。
要得到一個(gè)pendingIntent對(duì)象,使用方法類(lèi)的靜態(tài)方法?getActivity(Context, int, Intent, int),getBroadcast(Context, int, Intent, int),?getService(Context, int, Intent, int)? 分別對(duì)應(yīng)著Intent的3個(gè)行為,跳轉(zhuǎn)到一個(gè)activity組件、打開(kāi)一個(gè)廣播組件和打開(kāi)一個(gè)服務(wù)組件。
參數(shù)有4個(gè),比較重要的事第三個(gè)和第一個(gè),其次是第四個(gè)和第二個(gè)??梢钥吹?#xff0c;要得到這個(gè)對(duì)象,必須傳入一個(gè)Intent作為參數(shù),必須有context作為參數(shù)。
pendingIntent是一種特殊的Intent。主要的區(qū)別在于Intent的執(zhí)行立刻的,而pendingIntent的執(zhí)行不是立刻的。pendingIntent執(zhí)行的操作實(shí)質(zhì)上是參數(shù)傳進(jìn)來(lái)的Intent的操作,但是使用pendingIntent的目的在于它所包含的Intent的操作的執(zhí)行是需要滿(mǎn)足某些條件的。
主要的使用的地方和例子:通知Notificatio的發(fā)送,短消息SmsManager的發(fā)送和警報(bào)器AlarmManager的執(zhí)行等等。

Android的狀態(tài)欄通知(Notification)

如果需要查看消息,可以拖動(dòng)狀態(tài)欄到屏幕下方即可查看消息。

步驟:

1?獲取通知管理器NotificationManager,它也是一個(gè)系統(tǒng)服務(wù)

2?建立通知Notification notification = new Notification(icon, null, when);【注】:這種方法是舊版的API試用方法,如果是新版的需要試用Notifiication.Builder

3?為新通知設(shè)置參數(shù)(比如聲音,震動(dòng),燈光閃爍)

4?把新通知添加到通知管理器

發(fā)送消息的代碼如下:

//獲取通知管理器

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)

int icon = android.R.drawable.stat_notify_chat;

long when = System.currentTimeMillis();//通知發(fā)生的時(shí)間為系統(tǒng)當(dāng)前時(shí)間

//新建一個(gè)通知,指定其圖標(biāo)和標(biāo)題

Notification notification = new Notification(icon, null, when);//第一個(gè)參數(shù)為圖標(biāo),第二個(gè)參數(shù)為短暫提示標(biāo)題,第三個(gè)為通知時(shí)間

notification.defaults = Notification.DEFAULT_SOUND;//發(fā)出默認(rèn)聲音

notification.flags |= Notification.FLAG_AUTO_CANCEL;//點(diǎn)擊通知后自動(dòng)清除通知

Intent openintent = new Intent(this, OtherActivity.class);

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, openintent, 0);//當(dāng)點(diǎn)擊消息時(shí)就會(huì)向系統(tǒng)發(fā)送openintent意圖

notification.setLatestEventInfo(this, “標(biāo)題”, “我是內(nèi)容", contentIntent);

mNotificationManager.notify(0, notification);//第一個(gè)參數(shù)為自定義的通知唯一標(biāo)識(shí)

?

重點(diǎn)是setLatestEventInfo( )方法的最后一個(gè)參數(shù)!!!!它是一個(gè)PendingIntent!!!!!!!!!

這里使用到了PendingIntent(pend本意是待定,不確定的意思)

PendingIntent可以看作是對(duì)Intent的包裝。PendingIntent主要持有的信息是它所包裝的Intent和當(dāng)前Application的Context。正由于PendingIntent中保存有當(dāng)前Application的Context,使它賦予帶他程序一種執(zhí)行的Intent的能力,就算在執(zhí)行時(shí)當(dāng)前Application已經(jīng)不存在了,也能通過(guò)存在PendingIntent里的Context照樣執(zhí)行Intent。

?

PendingIntent的一個(gè)很好的例子:

SmsManager的用于發(fā)送短信的方法:

sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent);

第一個(gè)參數(shù):destinationAddress?對(duì)方手機(jī)號(hào)碼

第二個(gè)參數(shù):scAddress?短信中心號(hào)碼?一般設(shè)置為空

第三個(gè)參數(shù):text?短信內(nèi)容

第四個(gè)參數(shù):sentIntent判斷短信是否發(fā)送成功,如果你沒(méi)有SIM卡,或者網(wǎng)絡(luò)中斷,則可以通過(guò)這個(gè)itent來(lái)判斷。注意強(qiáng)調(diào)的是“發(fā)送”的動(dòng)作是否成功。那么至于對(duì)于對(duì)方是否收到,另當(dāng)別論

第五個(gè)參數(shù):deliveryIntent當(dāng)短信發(fā)送到收件人時(shí),會(huì)收到這個(gè)deliveryIntent。即強(qiáng)調(diào)了“發(fā)送”后的結(jié)果

就是說(shuō)是在"短信發(fā)送成功"和"對(duì)方收到此短信"才會(huì)激活?sentIntent和deliveryIntent這兩個(gè)Intent。這也相當(dāng)于是延遲執(zhí)行了Intent


上面兩個(gè)例子可以理解,PendingIntent就是一個(gè)可以在滿(mǎn)足一定條件下執(zhí)行的Intent,它相比于Intent的優(yōu)勢(shì)在于自己攜帶有Context對(duì)象,這樣他就不必依賴(lài)于某個(gè)activity才可以存在。

PendingIntent和Intent的區(qū)別:An Intent is something that is used right now; a PendingIntent is something that may create an Intent in the future. You will use a PendingIntent with Notifications, AlarmManager, etc.

【再詳解】

intent英文意思是意圖,pending表示即將發(fā)生或來(lái)臨的事情。?
PendingIntent這個(gè)類(lèi)用于處理即將發(fā)生的事情。比如在通知Notification中用于跳轉(zhuǎn)頁(yè)面,但不是馬上跳轉(zhuǎn)。?

Intent 是及時(shí)啟動(dòng),intent 隨所在的activity 消失而消失。?
PendingIntent 可以看作是對(duì)intent的包裝,通常通過(guò)getActivity,getBroadcast ,getService來(lái)得到pendingintent的實(shí)例,當(dāng)前activity并不能馬上啟動(dòng)它所包含的intent,而是在外部執(zhí)行 pendingintent時(shí),調(diào)用intent的。正由于pendingintent中 保存有當(dāng)前App的Context,使它賦予外部App一種能力,使得外部App可以如同當(dāng)前App一樣的執(zhí)行pendingintent里的 Intent, 就算在執(zhí)行時(shí)當(dāng)前App已經(jīng)不存在了,也能通過(guò)存在pendingintent里的Context照樣執(zhí)行Intent(就像在手機(jī)上關(guān)掉了信息,照樣可以通過(guò)通知欄的短信通知,來(lái)打開(kāi)通知欄上顯示的信息)。另外還可以處理intent執(zhí)行后的操作。常和alermanger 和notificationmanager一起使用。?
Intent一般是用作Activity、Sercvice、BroadcastReceiver之間傳遞數(shù)據(jù),而Pendingintent,一般用在 Notification上,可以理解為延遲執(zhí)行的intent,PendingIntent是對(duì)Intent一個(gè)包裝。

?

【參閱】http://blog.csdn.net/zeng622peng/article/details/6180190

轉(zhuǎn)載于:https://www.cnblogs.com/plxx/p/3939769.html

總結(jié)

以上是生活随笔為你收集整理的Android--pendingIntent Intent的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。