国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中pendingIntent與Intent的深入分析

2019-10-23 18:30:51
字體:
來源:轉載
供稿:網友

Android中pendingIntent的深入分析

pendingIntent字面意義:等待的,未決定的Intent。

要得到一個pendingIntent對象,使用方法類的靜態方法 getActivity(Context, int, Intent, int),getBroadcast(Context, int, Intent, int),getService(Context, int, Intent, int)  分別對應著Intent的3個行為,跳轉到一個activity組件、打開一個廣播組件和打開一個服務組件。

參數有4個,比較重要的事第三個和第一個,其次是第四個和第二個。可以看到,要得到這個對象,必須傳入一個Intent作為參數,必須有context作為參數。

pendingIntent是一種特殊的Intent。主要的區別在于Intent的執行立刻的,而pendingIntent的執行不是立刻的。pendingIntent執行的操作實質上是參數傳進來的Intent的操作,但是使用pendingIntent的目的在于它所包含的Intent的操作的執行是需要滿足某些條件的。

主要的使用的地方和例子:通知Notificatio的發送,短消息SmsManager的發送和警報器AlarmManager的執行等等。

Android的狀態欄通知(Notification)

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

步驟:

1獲取通知管理器NotificationManager,它也是一個系統服務
2建立通知Notification notification = new Notification(icon, null, when);
3為新通知設置參數(比如聲音,震動,燈光閃爍)
4把新通知添加到通知管理器

發送消息的代碼如下:

//獲取通知管理器NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)int icon = android.R.drawable.stat_notify_chat;long when = System.currentTimeMillis();//通知發生的時間為系統當前時間//新建一個通知,指定其圖標和標題Notification notification = new Notification(icon, null, when);//第一個參數為圖標,第二個參數為短暫提示標題,第三個為通知時間notification.defaults = Notification.DEFAULT_SOUND;//發出默認聲音notification.flags |= Notification.FLAG_AUTO_CANCEL;//點擊通知后自動清除通知Intent openintent = new Intent(this, OtherActivity.class);PendingIntent contentIntent = PendingIntent.getActivity(this, 0, openintent, 0);//當點擊消息時就會向系統發送openintent意圖notification.setLatestEventInfo(this, “標題”, “我是內容", contentIntent);mNotificationManager.notify(0, notification);//第一個參數為自定義的通知唯一標識

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

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

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

PendingIntent的一個很好的例子:

SmsManager的用于發送短信的方法:

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

第一個參數:destinationAddress對方手機號碼

第二個參數:scAddress短信中心號碼一般設置為空

第三個參數:text短信內容

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

第五個參數:deliveryIntent當短信發送到收件人時,會收到這個deliveryIntent。即強調了“發送”后的結果
就是說是在"短信發送成功"和"對方收到此短信"才會激活 sentIntent和deliveryIntent這兩個Intent。這也相當于是延遲執行了Intent

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

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

 

注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湘西| 新建县| 康保县| 石城县| 油尖旺区| 山东省| 卫辉市| 大石桥市| 清苑县| 托里县| 台北县| 阿拉尔市| 布尔津县| 城市| 屯留县| 行唐县| 乐都县| 山阳县| 民勤县| 泰安市| 林甸县| 南和县| 新沂市| 青川县| 微博| 永胜县| 富源县| 北辰区| 望奎县| 永新县| 胶州市| 湘潭市| 新建县| 宁夏| 镶黄旗| 彩票| 全椒县| 余庆县| 平利县| 安庆市| 卓尼县|