observerandroid
『壹』 android設計模式中的觀察者模式能說一下嗎
java">/*
*觀察者模式
*定義對象間的一種一個(Subject)對多(Observer)的依賴關系,當一個對象的狀態發送改變時,所以依賴於它的
*對象都得到通知並被自動更新
*
*當然,MVC只是Observer模式的一個實例。Observer模式要解決的問題為:
*建立一個一(Subject)對多(Observer)的依賴關系,並且做到當「一」變化的時候,
*依賴這個「一」的多也能夠同步改變。最常見的一個例子就是:對同一組數據進行統計分析時候,
*我們希望能夠提供多種形式的表示(例如以表格進行統計顯示、柱狀圖統計顯示、百分比統計顯示等)。
*這些表示都依賴於同一組數據,我們當然需要當數據改變的時候,所有的統計的顯示都能夠同時改變。
*Observer模式就是解決了這一個問題。
*
*適用性:
*1.當一個抽象模型有兩個方面,其中一個方面依賴於另一方面
*將這兩者封裝成獨立的對象中以使它們可以各自獨立的改變和服用
*
*2.當對一個對象的改變需要同時改變其他對象,而不知道具體有多少對象有待改變
*
*3.當一個對象必須通知其它對象,而它又不能假定其它對象是誰
*
*參與者:
*1.Subject(目標)
*目標知道它的觀察者,可以有任意多個觀察者觀察同一個目標
*提供注冊和刪除觀察者對象的介面
*
*2.Observer(觀察者)
*為那些在目標發生改變時需獲得通知的對象定義個更新的介面
*
*3.ConcreteSubject(具體目標)
*將有關狀態存入各ConcreteObserver對象
*當它的狀態發送改變時,向它的各個觀察者發出通知
*
*4.ConcreteObserver(具體觀察者)
*維護一個指向ConcreteObserver對象的引用
*存儲有關狀態,這些狀態應與目標的狀態保持一致
*實現Observer的更新介面是自身狀態與目標的狀態保持一致
*
*
**/
『貳』 android源碼里哪些地方用到了觀察者模式
1. Subject被觀察者。是一個介面或者是抽象類,定義被觀察者必須實現的職責,它必須能偶動態地增加、取消觀察者,管理觀察者並通知觀察者。
2. Observer觀察者。觀察者接收到消息後,即進行update更新操作,對接收到的信息進行處理。
3. ConcreteSubject具體的被觀察者。定義被觀察者自己的業務邏輯,同時定義對哪些事件進行通知。
4. ConcreteObserver具體觀察者。每個觀察者在接收到信息後處理的方式不同,各個觀察者有自己的處理邏輯。
觀察者模式有什麼優點呢:
觀察者和被觀察者之間是抽象耦合的,不管是增加觀察者還是被觀察者都非常容易擴展。
根據單一職責原則,每個類的職責是單一的,那麼怎麼把各個單一的職責串聯成真實的復雜的邏輯關系呢,觀察者模式可以起到橋梁作用。
觀察者模式是松耦合的典型。
在Android源碼中,其中一個經典的使用到觀察者模式的就是Android控制項的事件監聽模型。
『叄』 android packageinstallobserver為什麼沒這個類
.Stub{
publicvoidpackageInstalled(StringpackageName,intreturnCode){
Messagemsg=mHandler.obtainMessage(INSTALL_COMPLETE);
msg.arg1=returnCode;
mHandler.sendMessage(msg);
}
};
你看看這里,地址:http://blog.csdn.net/connectionutils/article/details/8224179 《求不封》
求採納
『肆』 android中獲得控制項的位置(相對於布局文件)
正確的代碼如下所示
TextViewtv=(TextView)findViewById(R.id.text);
tv.getViewTreeObserver().addOnGlobalLayoutListener(newOnGlobalLayoutListener(){
@Override
publicvoidonGlobalLayout(){
//這里執行獲取位置大小操作
intleft=tv.getLeft();
inttop=tv.getTop();
intbottom=tv.getBottom();
intright=tv.getRight();
//tv相對於父布局的坐標就得出來了
}
}
view的位置和大小是通過onLayout和onMeasure方法計算出來的,執行到activity的onCreate()方法時,尚未開始計算控制項的大小和位置,所以是取不到的
OnGlobalLayoutListener 是ViewTreeObserver的內部類,當一個視圖樹的布局發生改變時,可以被ViewTreeObserver監聽到,這是一個注冊監聽視圖樹的觀察者(observer),在視圖樹的全局事件改變時得到通知
除了OnGlobalLayoutListener ,ViewTreeObserver還有如下內部類:
interfaceViewTreeObserver.OnGlobalFocusChangeListener
當在一個視圖樹中的焦點狀態發生改變時,所要調用的回調函數的介面類
interfaceViewTreeObserver.OnGlobalLayoutListener
當在一個視圖樹中全局布局發生改變或者視圖樹中的某個視圖的可視狀態發生改變時,所要調用的回調函數的介面類
interfaceViewTreeObserver.OnPreDrawListener
當一個視圖樹將要繪制時,所要調用的回調函數的介面類
interfaceViewTreeObserver.OnScrollChangedListener
當一個視圖樹中的一些組件發生滾動時,所要調用的回調函數的介面類
interfaceViewTreeObserver.OnTouchModeChangeListener
當一個視圖樹的觸摸模式發生改變時,所要調用的回調函數的介面類
『伍』 android 資料庫怎麼監聽數據變化
在android中經常會用到改變資料庫內容後再去使用資料庫更新的內容,很多人會重新去query一遍,但是這樣的問題就是程序會特別占內存,而且有可能會摟關cursor而導致程序內存未釋放等等。其實android內部提供了一種ContentObserver的東西來監聽資料庫內容的變化。
ContentObserver的構造函數需要一個參數Hanlder,因為ContentObserver內部使用了一個實現Runnable介面的內部類NotificationRunnable,來實現資料庫內容的變化。需要使用hanlder去post消息。注冊ContentObserver的方法是:getContentResolver().registerContentObserver(uri, notifyForDescendents, observer).
上面3個參數為:uri----Uri類型,是需要監聽的資料庫的uri.
notifyForDescendents---boolean true的話就會監聽所有與此uri相關的uri。false的話則是直接特殊的uri才會監聽。一般都設置為true.
observer-----ContentObserver 就是需要的contentobserver.
初始化一個ContentObserver對象,重載onChange(boolean ),在這個方法里去操作資料庫的使用,針對變化後的使用。
『陸』 安卓rxjava怎麼將實體類轉換為observer
在開始說代碼之前,先澄清幾個概念。RxJava最核心的東西就是Observable和Observer。Observable會發出數據,而與之相對的Observer則會通過訂閱Observable來進行觀察。Observer可以在Observable發出數據、報錯或者聲明沒有數據可以發送時進行相應的操作。這三個操作被封裝在Observer介面中,相應的方法為onNext(),onError()和onCompleted()。明確了這些概念以後,讓我們來看一些例子。
『柒』 ghost observer安卓
你最好PROTEL99SE和變形桿菌安裝。
前者是一個原理圖設計和PCB設計,很多公司都在用這個。
後者是用於模擬,Proteus軟體有十多年的歷史,被廣泛應用於世界各地,除了它的其他EDA工具使用相同的原則布局,PCB自動或手動布線和電路模擬功能,其革命性的功能,他的電路模擬是互動的,微處理器的應用,還可以直接在基於原理圖的虛擬原型設計和軟體編程的實時源代碼級調試,如果顯示和輸出,以及看到的投資及營運,以及虛擬儀器,如示波器,邏輯分析儀,變形桿菌的系統配置的影響,使您可以創建一個完整的電子設計和開發環境的輸出!
變形桿菌結合布局,混合模式SPICE模擬,PCB設計和先進的自動路由的原則,以實現完整的電子設計系統。
『捌』 觀察者模式 在android中什麼時候會用到
android中注冊簡訊和聯系人的變更,就會用到觀察者模式
通過ContentProvider注冊一個observer實現的