《android開發藝術探索》讀書筆記(四)--RemoteViews

來源:互聯網
上載者:User

標籤:布局檔案   藝術   反射   bar   ima   bin   line   idg   --   

No1:

RemoteViews使用情境:通知欄和案頭小組件

No2:

通知欄主要通過NotificationManager的notify方法來實現的

案頭小組件是通過AppWidgetProvider來實現的,AppWidgetProvider本質上是一個廣播

No3:

通知的實現可以看我的另外一篇Notification通知

案頭小組件的實現可以看我的另外一篇案頭小組件開發

No4:

PendingIntent的瞭解可以看我的另外一篇PendingIntent

No5:

RemoteViews支援的類型如下:

Layout:FrameLayout、LinearLayout、RelativeLayout、GridLayout

View:AnalogClock、Button、Chronometer、ImageButton、ImageView、ProgressBar、TextView、ViewFlipper、ListView、GridView、StackView、AdapterViewFlipper、ViewStub

RemoteViews不支援它們的子類以及其他View類型,故也不支援自訂View

No6:

RemoteViews的一系列set方法是通過反射來完成的

No7:

通知欄和案頭小組件中的布局檔案實際上是在NotificationManagerService以及AppWidgetService中被載入的,而它們運行在系統的SystemServer中,這就和我們的進程構成了跨進程通訊的情境

No8:

RemoteViews的作用是在其他進程中顯示並更新View界面。

No9:

RemoteVeiws會通過Binder傳遞到SystemServer進程,這是因為RemoteViews實現了Parcelable介面,因此它可以跨進程傳輸,系統會根據RemoteViews中的包名等資訊去得到該應用的資源。然後會通過LayoutInflater去載入RemoteViews中的布局檔案

No10:

通知欄和案頭小組件分別由NotificationManager和AppWidgetManager管理,而NotificationManager和AppWidgetManager通過Binder分別和SystemServer進程中的NotificationManagerService以及AppWidgetService進行通訊。

No11:

從理論上來說,系統完全可以通過Binder去支援所有的View和View操作,但是這樣做的話代價太大,因為View的方法太多了,另外就是大量的IPC操作會影響效率。

為瞭解決這個問題,系統並沒有通過Binder去直接支援View的跨進程訪問,而是提供了一個Action的概念,Action代表一個View操作,Action同樣實現了Parcelable介面。

這樣的好處是不需要定義大量的Binder介面,其次避免了大量的IPC操作,提高了程式的效能。

No12:

遠程進程通過RemoteViews的apply方法來進行View的更新操作,RemoteViews的apply方法內部則會去遍曆所有的Action對象並調用它們的apply方法,具體的View更新操作是由Action對象的apply方法來完成的。

 

No13:

RemoteViews的apply方法首先會通過LayoutInflater去載入RemoteViews中的布局檔案(通過getLayoutId獲得),載入完布局檔案後會通過performApply去執行一些更新操作。

No14:

Action對象的apply方法就是真正操作View的地方。

No15:

調用RemoteViews的set方法時,並不會立刻更新它們的介面,而必須通過NotificationManager的notify方法以及AppWidgetManager的updateAppWidget才能更新它們的介面。

《android開發藝術探索》讀書筆記(四)--RemoteViews

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.