android 如何接收和傳送intent

2021-09-01 11:09:51 字數 2525 閱讀 8182

1. intents被分成兩個主要目錄

● activity action intents(活動動作意圖)intents用來呼叫應用程式以外的活動。只有乙個活動可以處理intent。例如,對於網頁瀏覽器,你需要開啟網頁瀏覽器活動來顯示乙個頁面。

● broadcast intents (廣播意圖)intents 被送出到多個活動來處理。乙個被android發出的廣播意圖的例子就是,當前電池的電量。任何活動處理這個意圖並適時的反應。——例如,如果電池電量低到一定程度,取消乙個活動。

2.android程式生命週期

● oncreate

● onstart

● process-specific events (for example: launching activities or accessing a database)

● onstop

● ondestroy

3.通用的活動動作意圖

(圖略)

4.通用的廣播意圖

(圖略)

5.android傳值方法總結

在android平台傳值,主要使用兩種方法乙個事 pendingintent 另乙個就是廣播了

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

1.實體類 intent 、context 、 broadcastreceiver

2.方法類 pendingintent context.sendbroadcast

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

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

他就像乙個快遞員,而且是個無所不能的快遞員,什麼都能送,只要你能把資訊加到他上面去

詳細的使用方法可以再sdk中找到,如果想要新增你想要的內容 可以用 intent.set**系列方法。

b context 這個翻譯成環境更好一些

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

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

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

c broadcastreceiver 是專門用來接收廣播的類

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

α pendingintent 這個方法就是直接傳遞 intent

好傳出了,怎麼才能保證能接收到呢?因為intent是乙個很強大的快遞員,他能記錄貨物需要達到的地點,所以pendingintent 幹嗎,他相當於乙個intent的工作場所,他只負責吧intent送出去

而intent 去那裡,直接告訴 intent就可以了

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

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

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

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

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

(2)另乙個就是在例項化的時候確定好例項的是那個乙個 引數

具體的請大家參看sdk

β 使用廣播來進行資料傳遞

如果直接使用pendingintent 是有目的的傳送, 那廣播可真算是漫無目的的傳送資訊了

其實broadcast 中傳遞的內容也是intent ,但可以傳遞的範圍可是遠的多。

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

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

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

接收方麻煩一些 需要 註冊

registerreceiver(intent, commandfilter);

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

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

string action = intent.getaction();

if (action.equals("自定定義的action"))

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

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

action_airplane_mode_changed

網絡卡如何傳送和接收資料報

網絡卡如何傳送資料報 文章出處 http blog.21ic.org user1 1066 archives 2007 40803.html ip報文可以看作乙個包。linux網絡卡驅動程式,將ip包新增14位元組的mac包頭,構成mac包。mac包中含有傳送端和接收端的mac位址資訊。既然是驅動程...

android開發tcp傳送與接收

這段時間在研究tcp通訊,這裡分享一下 private wifimanager manager 組播鎖 private wifimanager.multicastlock lock tcp連線的伺服器ip和port private static string tcp server private s...

Android廣播的傳送與接收

廣播分為有序廣播和無序廣播 無序廣播 只要是廣播接收者指定了接收的事件型別,就可以接收到傳送出來的廣播訊息。不能修改訊息。有序廣播 傳送的廣播訊息會按照廣播接收者的優先順序從高到低,一級一級的傳送訊息。訊息可以被攔截,可以被修改。一般傳送無序廣播應用的較為廣泛 intent intent new i...