二十二 內容觀察者 廣播

2021-10-19 10:29:42 字數 2085 閱讀 2603

課前回顧:

內容觀察者:

①註冊內容觀察者

uri uri2=uri.

parse

("content:");

//註冊層內容觀察者

resolver.

registercontentobserver

(uri2,

true

,new

contentobserver

(new

handler()

)});

②在內容提供者新增通知內容觀察者**

insert、update 、delete 方法中;

uri uri2=uri.

parse

("content:");

getcontext()

.getcontentresolver()

.notifychange

(uri2,null)

;

22.1 廣播接收者入門

22.1.1理論概述

理解廣播與廣播接收器

1)廣播事件處理屬於系統級的事件處理(一般事件處理是屬於view級的事件處理)

2)乙個應用可以在發生特定事件時傳送broadcast, 系統中任何應用只要註冊了對應的receiver就會接收到此broadcast

3)乙個應用如果對某個廣播感興趣, 就可以註冊對應的receiver來接收廣播

4)廣播事件機制是應用程式(程序間)之間通訊的一種手段

5)廣播機制最大的特點就是傳送方並不關心接收方是否接到資料,也不關心接收方是如何處理資料的,通過這種形式來達到接、收雙方的完全解耦

6)廣播事件處理過程即針對某一廣播做出響應的過程

22.1.2什麼是廣播接收者

android系統中,內建了很多系統級別的廣播,例如手機開機完成後會傳送一條廣播,電池電量不足時會傳送一條廣播等。

android系統中提供了廣播接收者broadcastreceiver,廣播接收者的作用就是接收來自系統或其他應用程式的廣播,並作出回應。

22.1.3廣播接收者建立與註冊

要使用廣播接收者接收其他應用程式發出的廣播,先要在本應用中建立廣播接收者並進行註冊。

①建立廣播接收者**:

public

class

mybroadcastreceiver

extends

broadcastreceiver

}

註冊廣播有兩種方式:常駐型廣播與非常駐型廣播。

①註冊常駐型廣播:

常駐型廣播是當應用程式關閉後,如果接收到其他應用程式發出的廣播,那麼該程式會自動重新啟動。常駐型廣播在清單檔案中註冊。

**如下:

android:name=

"cn.itcast.mybroadcastreceiver"

>

"20"

>

"android.provider.telephony.sms_received"

/>

<

/receiver>

②註冊非常駐型廣播

非常駐型廣播依賴於註冊廣播的元件的生命週期,例如,在activity中註冊廣播接收者,當activity銷毀後廣播也隨之被移除。這種廣播事件在**中註冊。

mybroadcastreceiver receiver =

newmybroadcastreceiver()

; stringaction=「android.provider.telephony.sms_received」;

intentfilter intentfilter =

newintentfilter

(action)

;registerreceiver

(receiver, intentfilter)

;

非常駐型廣播可以在ondestory()方法中解除廣播,具體**如下:

unregisterreceiver

(receiver)

;

C 學習(二十二)觀察者模式

實現觀察者模式有很多形式,比較直觀的一種是使用一種 註冊 通知 撤銷註冊 的形式。下面的三個圖詳細的描述了這樣一種過程 observer 將自己註冊到被觀察物件 subject 中,被觀察物件將觀察者存放在乙個容器 container 裡。被觀察物件發生了某種變化 如圖中的somechange 從容...

19 內容觀察者 廣播

19.1內容觀察者 廣播 內容提供者是android 系統四大元件之一,用於儲存和檢索資料,是android。系統中不同應用程式之間共享資料的介面 監聽內容提供者資料發生改變 1 定義乙個內容觀察者 2 監聽內容提供者資料 3 更新資料 廣播事件處理屬於系統事件處理。一般事件處理是屬於view級的時...

內容觀察者

1,註冊內容觀察者 getcontentresolver registercontentobserver uri,true,observer observer 實現contentobserver類的下面方法 override public void onchange boolean selfchan...