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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

PendingIntent与Intent的区别

發(fā)布時間:2024/9/5 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PendingIntent与Intent的区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

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

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

步驟:

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

2 建立通知Notification notification = new Notification(icon, null, when);

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

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

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

//獲取通知管理器

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

int icon = android.R.drawable.stat_notify_chat;

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

//新建一個通知,指定其圖標和標題

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

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

notification.flags |= Notification.FLAG_AUTO_CANCEL;//點擊通知后自動清除通知

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

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

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

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

?

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

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

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

?

PendingIntent的一個很好的例子:

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

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

第一個參數(shù):destinationAddress 對方手機號碼

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

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

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

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

就是說是在"短信發(fā)送成功""對方收到此短信"才會激活 sentIntentdeliveryIntent這兩個Intent。這也相當于是延遲執(zhí)行了Intent


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

轉(zhuǎn)載于:https://www.cnblogs.com/tianguook/archive/2012/10/17/2727508.html

總結(jié)

以上是生活随笔為你收集整理的PendingIntent与Intent的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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