欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

徹底認(rèn)識PendingIntent-創(chuàng)新互聯(lián)

最近在寫一個鬧鐘程序的時(shí)候使用到了 PendingIntent, 而且是兩個地方用到,一個是 AlarmManager 定時(shí)的時(shí)候, 另一個是在點(diǎn)擊通知進(jìn)入應(yīng)用的時(shí)候。其實(shí)我早就想深入研究一下 PendingIntent 了,因?yàn)槲液芎闷嬉幌聨讉€問題:

目前創(chuàng)新互聯(lián)已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管運(yùn)營、企業(yè)網(wǎng)站設(shè)計(jì)、海湖新網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
  1. 已經(jīng)有了 Intent, 為什么還有 PendingIntent?
  2. PendingIntent 也就幾個場景用到過,還有其他場景嗎?
  3. 它的內(nèi)部實(shí)現(xiàn)。

Intent 和 PendingIntent 的區(qū)別

Intent

Intent 是意圖的意思。Android 中的 Intent 正是取自這個意思,它是一個消息對象,通過它,Android 系統(tǒng)的四大組件能夠方便的通信,并且保證解耦。

Intent 可以說明某種意圖,攜帶一種行為和相應(yīng)的數(shù)據(jù),發(fā)送到目標(biāo)組件。

IntentFilter 與 Intent 配套使用,它聲明了一個組件接受某個 Intent。

PendingIntent

PendingIntent 是對 Intent 的封裝,關(guān)鍵的不同在于:

A組件 創(chuàng)建了一個 PendingIntent 的對象然后傳給 B組件,B 在執(zhí)行這個 PendingIntent 的 send 時(shí)候,它里面的 Intent 會被發(fā)送出去,而接受到這個 Intent 的 C 組件會認(rèn)為是 A 發(fā)的。

B 以 A 的權(quán)限和身份發(fā)送了這個 Intent。

比如,我們的 Activity 如果設(shè)置了 exported = false,其他應(yīng)用如果使用 Intent 就訪問不到這個 Activity,但是使用 PendingIntent 是可以的。

綜上所述,PendingIntent 有兩個特點(diǎn):

  1. 將某個動作的觸發(fā)時(shí)機(jī)交給其他應(yīng)用
  2. 讓那個應(yīng)用代表自己去執(zhí)行那個動作(權(quán)限都給他了)

API

獲取 PendingIntent

  1. getActivity
  2. getActivities
  3. getBroadcast
  4. getService
  5. getForegroundService

為什么沒有 getContentProvider?
我猜測,ContentProvider 作為一個數(shù)據(jù)源,太重要了,相當(dāng)于是把數(shù)據(jù)直接暴露出去了

它們的參數(shù)都相同,都是四個:Context, requestCode, Intent, flags。Context 不必多說,要想讓其他組件代替自己辦事,當(dāng)然要將自己的上下文傳給它。action, requestCode 和 Intent 共同來標(biāo)志一個行為的唯一性,什么意思呢?

簡單的說,我們通過相同的方法(action), 相同的 requestCode 和相同的 Intent 獲取到的 PendingIntent, 雖然可能不是同一個對象,但是,卻是代表同一個東西,之所以這樣看 flags 參數(shù)就知道了。

FLAG_ONE_SHOT: 只執(zhí)行一次, 在調(diào)用了 send 以后自動調(diào)用 cancel,不能在調(diào)用 send 了。
FLAG_NO_CREATE: 不創(chuàng)建新的,如果我們之前設(shè)置過,這次就能獲取到,否則,返回 null。
FLAG_CANCEL_CURRENT: 如果之前設(shè)置過,就取消掉, 重新創(chuàng)建個新的
FLAG_UPDATE_CURRENT: 如果之前設(shè)置過,就更新它。更新什么呢,Intent 的 Extras
FLAG_IMMUTABLE: 設(shè)置 Intent 在 send 的時(shí)候不能更改

發(fā)送 PendingIntent

send 是觸發(fā) PendingIntent 包含的行為,它有很多重載形式,我們通常的開發(fā)用不到他,除非我們做桌面程序開發(fā)或者 Android Framework 開發(fā)。
這里我們只是大體說明一下,可以傳給它一個 Intent 來對它原來的 Intent 做修改,但是如果目標(biāo)設(shè)置了 FLAG_IMMUTABLE 則給參數(shù)忽略??梢栽O(shè)置 callback 當(dāng)發(fā)送完成獲得回調(diào),并且可以通過設(shè)置handler決定回調(diào)發(fā)生的線程。

取消 PendingIntent

只有設(shè)置 PendingIntent 的原來的應(yīng)用可以取消它,發(fā)送方只能發(fā)送,當(dāng)一個 PendingIntent 被取消后,發(fā)送則不會成功。

PendingIntent 的使用場景

已知的使用場景是:

  1. 通知,在點(diǎn)擊通知時(shí)執(zhí)行調(diào)起本應(yīng)用的操作,當(dāng)然也可以執(zhí)行其他操作
  2. 鬧鐘,定時(shí)執(zhí)行某個操作
  3. 桌面小部件,點(diǎn)擊小部件時(shí)執(zhí)行某個操作

通知,鬧鐘,桌面小部件,都是運(yùn)行在其他應(yīng)用中的,但是給我們的感知就像是我們自己的應(yīng)用的一部分。

內(nèi)部實(shí)現(xiàn)

大體的原理是: A應(yīng)用希望讓B應(yīng)用幫忙觸發(fā)一個行為,這是跨應(yīng)用的通信,需要 Android 系統(tǒng)作為中間人,這里的中間人就是 ActivityManager。 A應(yīng)用創(chuàng)建建 PendingIntent,在創(chuàng)建 PendingIntent 的過程中,向 ActivityManager 注冊了這個 PendingIntent,所以,即使A應(yīng)用死了,當(dāng)它再次蘇醒時(shí),只要提供相同的參數(shù),還是可以獲取到之前那個 PendingIntent 的。當(dāng) A 將 PendingIntent 調(diào)用系統(tǒng) API 比如 AlarmManager.set(),實(shí)際是將權(quán)限給了B應(yīng)用,這時(shí)候, B應(yīng)用可以根據(jù)參數(shù)信息,來從 ActivityManager 獲取到 A 設(shè)置的 PendingIntent。


匹配 PendingIntent 相同時(shí),需要匹配 Intent 相同,Intent 如何匹配相同的?

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站題目:徹底認(rèn)識PendingIntent-創(chuàng)新互聯(lián)
分享路徑:http://aaarwkj.com/article46/ddojeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、響應(yīng)式網(wǎng)站、關(guān)鍵詞優(yōu)化企業(yè)網(wǎng)站制作、定制網(wǎng)站手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營
欧美日韩精品成人大片| 91精品国产成人在线| 亚洲国产熟女导航网站视频| 日本韩国欧美一区二区在线| 成人污视频网站在线观看| 亚洲成熟中老妇女视频| 国产一区二区伦理视频| 熟妇人妻内射一区二区三区| 久草亚洲一区二区三区av| 精品啪啪高潮一区二区| 日本人妻丰满熟妇久久| 野花日本免费高清完整| 成人性生活三级黄色片| 免费看的日韩av毛片| 亚洲精品熟女av影院| 亚洲国产欧美在线91| 亚洲国产精品一区二区电影| 亚洲日本一区二区高清在线| 黄片免费在线播放欧美| 中国女人内射91熟女| 亚洲国产成人精品av在线| 日本中文字幕一区在线观看 | 久久人妻少妇嫩草av蜜桃综合 | 国产麻豆剧传媒精品av| 99久久偷拍美女大白屁股| 日韩欧美亚洲一级黄片| 在线观看视频网站一卡二卡| 日韩精品高清不卡一区二区三区| 日韩不卡一区二区在线观看| 欧美黄色一区二区在线观看| 乡村丰满的大屁股熟妇| 特级特色生活片免费看| 亚洲蜜桃精品一区二区三区| 亚洲av污精品一区二区三区| 欧美日韩国产精品一区二区三区| 亚洲国产熟女导航网站视频| 毛片91成人在线播放| 久久精品一偷一偷国产| 欧美日韩在线一区2区| 日韩一区二区精品网站 | 97在线视频观看视频在线|