成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android傳值方法細講

移動開發 Android
Android傳值的實現,可以通過PendingIntent以及廣播這兩種方式來操作。在這篇文章中,將會對此進行一個具體的介紹,以滿足大家的學習需求。

Android這一開源的手機操作系統中,有很多應用技巧以及修改方式值得我們去掌握,來改變手機性能,滿足我們的應用需求。在這里我們就先來為大家詳細介紹一下有關Android傳值的方法。#t#

當一個application 中有多個 Activity的時候,那么每個Activity之前的傳值就是一個問題了。所以這里介紹一下相關的方法。

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

按照大類,我把Android傳值相關的類進行了劃分

1.實體類 Intent 、Context 、 BroadcastReceiver

2.方法類 PendingIntent Context.sendBroadcast

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

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

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

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

B Context 這個翻譯成環境更好一些

顧名思義 他就是獲取我們當前的環境狀態, 比如說我想知道現在用戶使用的什么語言,處于什么狀態,航班、靜音。用戶有沒有接打電話

等等,就像我們獲取系統時間一樣。Context也我們設置了一個容器讓我們來獲取系統的狀況。

因為這個系統狀況很重要,有的時候就是以系統狀態為依據,所以Intent 好多方法都要加入這個 都需要 Intent.context

C BroadcastReceiver 是專門用來接收廣播的類

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

α PendingIntent 這個方法就是直接傳遞 Intent

好傳出了,怎么才能保證Android傳值能接收到呢?因為Intent是一個很強大的快遞員,他能記錄貨物需要達到的地點,所以PendingIntent 干嗎,他相當于一個Intent的工作場所,他只負責

Intent送出去

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

通過下面這條語句就可以達到顯影的效果 intent.setClass(Activity.this//指代Activity, Report.class//指代目標類);

接收端怎么獲取消息呢,這個也簡單。因為Intent 已經按照他自己的地址來到了所處的地方,我們直接實例化就行了。

當然這是在簡單的情況下,就是說如果這個公司只有一個貨物所以我們之需要一個快遞員就可以,接收方目前只有這個貨物需要接收,那快遞員一到他接收方只要確認一下就知道他來干嘛了。

但多數情況下,兩家公司的業務非常繁忙,所以可能有多個快遞員,多個貨物,同一個部門可能有多個。那么怎么來做呢。就需要加限定規則

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

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

β Android傳值使用廣播來進行數據傳遞

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

其實Broadcast 中傳遞的內容也是Intent ,但可以傳遞的范圍可是遠的多。

而且系統的很多其他程序也在發送廣播,比如說手機的狀態,還要說一下航班狀態,如果出于航班狀態,那么系統就會自動發送廣播,而我們只要去接收就好,這樣我們就能知道哦,系統現在時在廣播狀態。

而在Widget 接受方法使用廣播,一方面是因為AppWidget 本來就是繼承BroadcastReciever 所以比較純,不會出問題。另外,這個是我的個人判斷,因為Widget還是和普通的app不同,我估計如果直接給 Widget傳送 Intent 又會受到限制,就像 handler的一樣,當然這是我的猜測,但是感覺還是用 廣播靠譜

廣播的載體是Intent,但是他們的標號則是Action。系統內定了很多Action。

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

接收方麻煩一些 需要 注冊

registerReceiver(intent, commandFilter);

第二個參數是Intent的過濾,而且不能為空。

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

 

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

 

Σ Widget 使用 PendingIntent 是因為 沒有其他的方法了。說實話 AppWidget 就給我們一個 可以使用RemoteViews 的方法,別的都不能用。所以就順勢寫了一個SetPeningIntent 當然這個方法也有很多固定的用法 ,啟動服務,啟動活動 ,發送廣播,基本上該有的他都有了 。

3.最后再來說一下 Action 其實一個字符串但是這個字符串 因為很長所以基本上很少有人和其明明重合

他們就是來定義一些狀態,還是航空狀態,他的Action就是

ACTION_AIRPLANE_MODE_CHANGED

以上就是對Android傳值的相關介紹。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-01-21 14:06:03

VB.NET MyCl

2023-12-07 19:33:09

Python推導式

2010-01-22 15:25:46

VB.NET Time

2010-06-10 16:20:37

BGP路由協議

2011-05-19 17:49:08

ActivityAndroid開發

2021-10-26 18:22:25

原理注冊表信息

2013-07-05 15:05:42

Windows PhoWP頁面間傳值方法

2012-05-14 21:14:07

Android頁面傳值

2011-04-11 10:06:16

傳值傳引用

2016-11-29 09:12:21

數據庫分布式ID

2023-11-29 09:47:11

C++對象

2009-07-06 10:00:31

JSP頁面傳值

2009-05-06 16:10:17

Java傳值引用

2013-07-24 16:47:23

iOS開發學習iOS協議代理傳值

2021-05-19 09:53:16

SpringbootMyBatisMySQL

2021-05-27 05:35:45

Go傳值傳引用

2009-09-07 03:44:50

C#窗體間傳值

2009-09-07 03:58:42

WinForm傳值

2019-08-28 14:40:39

交換機網絡vlan

2010-02-04 16:43:18

Android 配置問
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人在线视频免费观看 | 在线免费看91 | 精品综合 | 久久久久国产精品一区 | 久久久女女女女999久久 | 超碰精品在线 | 欧美韩一区二区 | 国产色播av在线 | www.日韩 | 免费在线观看成年人视频 | 亚洲a视频 | 91精品国产综合久久婷婷香蕉 | 极品电影院| 久久美国 | 九九99精品 | 亚洲伊人a | 亚洲欧美日韩一区二区 | 久久人人网 | 亚洲日日夜夜 | 国产精品免费在线 | 天天躁日日躁xxxxaaaa | 91av在线免费| 国产精品欧美一区喷水 | 中文字幕在线看第二 | 亚洲中国字幕 | 久久久久综合 | 五月婷婷视频 | 欧洲在线视频 | 成人精品区 | 精品在线一区二区 | 在线一区二区国产 | 久久精品99国产精品 | 色伊人网 | 中文字幕在线观看视频一区 | 亚洲欧美国产精品久久 | 国产精品亚洲精品日韩已方 | 久久久久久黄 | 国家aaa的一级看片 h片在线看 | 国产乱码精品一区二区三区忘忧草 | 国产日韩精品视频 | 国产精品高潮呻吟久久av野狼 |