自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android傳值方法細(xì)講

移動(dòng)開發(fā) Android
Android傳值的實(shí)現(xiàn),可以通過(guò)PendingIntent以及廣播這兩種方式來(lái)操作。在這篇文章中,將會(huì)對(duì)此進(jìn)行一個(gè)具體的介紹,以滿足大家的學(xué)習(xí)需求。

Android這一開源的手機(jī)操作系統(tǒng)中,有很多應(yīng)用技巧以及修改方式值得我們?nèi)フ莆?,?lái)改變手機(jī)性能,滿足我們的應(yīng)用需求。在這里我們就先來(lái)為大家詳細(xì)介紹一下有關(guān)Android傳值的方法。#t#

當(dāng)一個(gè)application 中有多個(gè) Activity的時(shí)候,那么每個(gè)Activity之前的傳值就是一個(gè)問(wèn)題了。所以這里介紹一下相關(guān)的方法。

在Android傳值,主要使用兩種方法一個(gè)是PendingIntent 另一個(gè)就是廣播了

按照大類,我把Android傳值相關(guān)的類進(jìn)行了劃分

1.實(shí)體類 Intent 、Context 、 BroadcastReceiver

2.方法類 PendingIntent Context.sendBroadcast

傳遞的方法 也就是方法類中的兩種

A Intent 字面意思是意圖,其實(shí)他的效果和字面意思差不多,高煥堂的很多書中都有詳細(xì)的介紹。

他就像一個(gè)快遞員,而且是個(gè)無(wú)所不能的快遞員,什么都能送,只要你能把信息加到他上面去

詳細(xì)的使用方法可以再SDK中找到,如果想要添加你想要的內(nèi)容 可以用 Intent.set**系列方法。

B Context 這個(gè)翻譯成環(huán)境更好一些

顧名思義 他就是獲取我們當(dāng)前的環(huán)境狀態(tài), 比如說(shuō)我想知道現(xiàn)在用戶使用的什么語(yǔ)言,處于什么狀態(tài),航班、靜音。用戶有沒(méi)有接打電話

等等,就像我們獲取系統(tǒng)時(shí)間一樣。Context也我們?cè)O(shè)置了一個(gè)容器讓我們來(lái)獲取系統(tǒng)的狀況。

因?yàn)檫@個(gè)系統(tǒng)狀況很重要,有的時(shí)候就是以系統(tǒng)狀態(tài)為依據(jù),所以Intent 好多方法都要加入這個(gè) 都需要 Intent.context

C BroadcastReceiver 是專門用來(lái)接收廣播的類

所以他有一個(gè)OnReceive()的方法 而具體的接受 我在下面詳述。

α PendingIntent 這個(gè)方法就是直接傳遞 Intent

好傳出了,怎么才能保證Android傳值能接收到呢?因?yàn)镮ntent是一個(gè)很強(qiáng)大的快遞員,他能記錄貨物需要達(dá)到的地點(diǎn),所以PendingIntent 干嗎,他相當(dāng)于一個(gè)Intent的工作場(chǎng)所,他只負(fù)責(zé)

Intent送出去

而Intent 去那里,直接告訴 Intent就可以了

通過(guò)下面這條語(yǔ)句就可以達(dá)到顯影的效果 intent.setClass(Activity.this//指代Activity, Report.class//指代目標(biāo)類);

接收端怎么獲取消息呢,這個(gè)也簡(jiǎn)單。因?yàn)镮ntent 已經(jīng)按照他自己的地址來(lái)到了所處的地方,我們直接實(shí)例化就行了。

當(dāng)然這是在簡(jiǎn)單的情況下,就是說(shuō)如果這個(gè)公司只有一個(gè)貨物所以我們之需要一個(gè)快遞員就可以,接收方目前只有這個(gè)貨物需要接收,那快遞員一到他接收方只要確認(rèn)一下就知道他來(lái)干嘛了。

但多數(shù)情況下,兩家公司的業(yè)務(wù)非常繁忙,所以可能有多個(gè)快遞員,多個(gè)貨物,同一個(gè)部門可能有多個(gè)。那么怎么來(lái)做呢。就需要加限定規(guī)則

(1)首先是 在Intent中加限定,可以設(shè)定一個(gè) Permission String 就像暗號(hào)一樣,如果暗號(hào)對(duì)了肯定錯(cuò)不了 (這個(gè)在廣播方法中很重要)

(2)另一個(gè)就是在實(shí)例化的時(shí)候確定好實(shí)例的是那個(gè)一個(gè) 參數(shù)

β Android傳值使用廣播來(lái)進(jìn)行數(shù)據(jù)傳遞

如果直接使用PendingIntent 是有目的的傳送, 那廣播可真算是漫無(wú)目的的傳送信息了

其實(shí)Broadcast 中傳遞的內(nèi)容也是Intent ,但可以傳遞的范圍可是遠(yuǎn)的多。

而且系統(tǒng)的很多其他程序也在發(fā)送廣播,比如說(shuō)手機(jī)的狀態(tài),還要說(shuō)一下航班狀態(tài),如果出于航班狀態(tài),那么系統(tǒng)就會(huì)自動(dòng)發(fā)送廣播,而我們只要去接收就好,這樣我們就能知道哦,系統(tǒng)現(xiàn)在時(shí)在廣播狀態(tài)。

而在Widget 接受方法使用廣播,一方面是因?yàn)锳ppWidget 本來(lái)就是繼承BroadcastReciever 所以比較純,不會(huì)出問(wèn)題。另外,這個(gè)是我的個(gè)人判斷,因?yàn)閃idget還是和普通的app不同,我估計(jì)如果直接給 Widget傳送 Intent 又會(huì)受到限制,就像 handler的一樣,當(dāng)然這是我的猜測(cè),但是感覺(jué)還是用 廣播靠譜

廣播的載體是Intent,但是他們的標(biāo)號(hào)則是Action。系統(tǒng)內(nèi)定了很多Action。

當(dāng)然我們也可以自己定義Intent 。 之需要 Intent("你自己定義的一個(gè)字符串")

接收方麻煩一些 需要 注冊(cè)

registerReceiver(intent, commandFilter);

第二個(gè)參數(shù)是Intent的過(guò)濾,而且不能為空。

如果是自己定義的Action 那還需要

 

  1. String action = intent.getAction();  
  2. if (action.equals("自定定義的Action"))   
  3. { 相應(yīng)的Intent的實(shí)例化 必須在這里進(jìn)行  

 

Σ Widget 使用 PendingIntent 是因?yàn)?沒(méi)有其他的方法了。說(shuō)實(shí)話 AppWidget 就給我們一個(gè) 可以使用RemoteViews 的方法,別的都不能用。所以就順勢(shì)寫了一個(gè)SetPeningIntent 當(dāng)然這個(gè)方法也有很多固定的用法 ,啟動(dòng)服務(wù),啟動(dòng)活動(dòng) ,發(fā)送廣播,基本上該有的他都有了 。

3.最后再來(lái)說(shuō)一下 Action 其實(shí)一個(gè)字符串但是這個(gè)字符串 因?yàn)楹荛L(zhǎng)所以基本上很少有人和其明明重合

他們就是來(lái)定義一些狀態(tài),還是航空狀態(tài),他的Action就是

ACTION_AIRPLANE_MODE_CHANGED

以上就是對(duì)Android傳值的相關(guān)介紹。

責(zé)任編輯:曹凱 來(lái)源: 博客園
相關(guān)推薦

2010-01-21 14:06:03

VB.NET MyCl

2010-01-22 15:25:46

VB.NET Time

2023-12-07 19:33:09

Python推導(dǎo)式

2010-06-10 16:20:37

BGP路由協(xié)議

2011-05-19 17:49:08

ActivityAndroid開發(fā)

2013-07-05 15:05:42

Windows PhoWP頁(yè)面間傳值方法

2012-05-14 21:14:07

Android頁(yè)面?zhèn)髦?/a>

2021-10-26 18:22:25

原理注冊(cè)表信息

2011-04-11 10:06:16

傳值傳引用

2016-11-29 09:12:21

數(shù)據(jù)庫(kù)分布式ID

2009-07-06 10:00:31

JSP頁(yè)面?zhèn)髦?/a>

2023-11-29 09:47:11

C++對(duì)象

2009-05-06 16:10:17

Java傳值引用

2021-05-19 09:53:16

SpringbootMyBatisMySQL

2013-07-24 16:47:23

iOS開發(fā)學(xué)習(xí)iOS協(xié)議代理傳值

2021-05-27 05:35:45

Go傳值傳引用

2012-06-29 13:31:56

ServletJSPJava

2023-04-18 09:17:40

父子組件Vue

2009-07-03 13:24:56

JSP表單

2024-07-03 08:04:34

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)