在android系統中widget主要由三部分組成, AppWidgetProvider,AppWidgetHost和AppWidgetService。一般三個模塊分別駐留在不同的進程中,AppWidgetProvider提供widget處理邏輯,當widet想更新顯示時,通過AppWidgetManager(AppWidgetManager是對AppWidgetService的包裝)調用AppWidgetHost更新顯示。AppWidgetHost負責顯示(比如Launcher),當用戶在HostView上點擊widget後,AppWidgetService會將事件通過broadcast發送給AppWidgetProvider處理。AppWidgetService負責協調和管理widget。
RemoteViews並不是一個真正的View,而只是一個用於整合Widget裏layout呈現與view組件行爲的一個Wrapper class(也就是appWidget所要長得樣子),透過RemoteView把建立該Widget需要的resource ID和各個組件的事件封裝起來。 RemoteViews會通過進程間通信機制傳遞給AppWidgetHost。
因爲activity跟widget的運作機制的不同,應用程序AP裏的Avtivity要更新組件時,可以直接取得該組件進行更新。而因爲Widget架構是繼承appWidgetProvider,所以每個widget就是一個BroadcastReceiver。
在Widget裏並無法直接對於組件進行更新,因爲Widget實際畫面是在Launcher AppWidgetHostView上呈現,故實際對於Widget組件的操作都在AppWidgetHostView進行,所以需要藉由RemoteView,主要目的在把Widget的所有組件進行封裝,透過RemoteView告訴Launcher你想要的AppWidget是長什麼樣子又因爲Widget跟Launcher處在不同的process,所以運作過程如下:
1. 透過AppWidgetManger傳送要更新AppWidget的識別id以及更新內容(remoteview)。
2. 在AppWidgetManger通知AppWidgetService哪些AppWidgetId需要更新View。
3. 透過aidl IPC機制,將widgetID跟RemoteView傳遞給AppWidgetHost。
4. AppWidgetHost會根據WidgetId找出放置該Widget的AppWidgetHostView,接着把RemoteView傳送過去。
- 本文出自IT能 編程交流論壇,原文地址:http://www.itneng.com/thread-2488-1-1.html
RemoteViews並不是一個真正的View,而只是一個用於整合Widget裏layout呈現與view組件行爲的一個Wrapper class(也就是appWidget所要長得樣子),透過RemoteView把建立該Widget需要的resource ID和各個組件的事件封裝起來。 RemoteViews會通過進程間通信機制傳遞給AppWidgetHost。
因爲activity跟widget的運作機制的不同,應用程序AP裏的Avtivity要更新組件時,可以直接取得該組件進行更新。而因爲Widget架構是繼承appWidgetProvider,所以每個widget就是一個BroadcastReceiver。
在Widget裏並無法直接對於組件進行更新,因爲Widget實際畫面是在Launcher AppWidgetHostView上呈現,故實際對於Widget組件的操作都在AppWidgetHostView進行,所以需要藉由RemoteView,主要目的在把Widget的所有組件進行封裝,透過RemoteView告訴Launcher你想要的AppWidget是長什麼樣子又因爲Widget跟Launcher處在不同的process,所以運作過程如下:
1. 透過AppWidgetManger傳送要更新AppWidget的識別id以及更新內容(remoteview)。
2. 在AppWidgetManger通知AppWidgetService哪些AppWidgetId需要更新View。
3. 透過aidl IPC機制,將widgetID跟RemoteView傳遞給AppWidgetHost。
4. AppWidgetHost會根據WidgetId找出放置該Widget的AppWidgetHostView,接着把RemoteView傳送過去。
- 本文出自IT能 編程交流論壇,原文地址:http://www.itneng.com/thread-2488-1-1.html
RemoteViews並不是一個真正的View,而只是一個用於整合Widget裏layout呈現與view組件行爲的一個Wrapper class(也就是appWidget所要長得樣子),透過RemoteView把建立該Widget需要的resource ID和各個組件的事件封裝起來。 RemoteViews會通過進程間通信機制傳遞給AppWidgetHost。
因爲activity跟widget的運作機制的不同,應用程序AP裏的Avtivity要更新組件時,可以直接取得該組件進行更新。而因爲Widget架構是繼承appWidgetProvider,所以每個widget就是一個BroadcastReceiver。
在Widget裏並無法直接對於組件進行更新,因爲Widget實際畫面是在Launcher AppWidgetHostView上呈現,故實際對於Widget組件的操作都在AppWidgetHostView進行,所以需要藉由RemoteView,主要目的在把Widget的所有組件進行封裝,透過RemoteView告訴Launcher你想要的AppWidget是長什麼樣子又因爲Widget跟Launcher處在不同的process,所以運作過程如下:
1. 透過AppWidgetManger傳送要更新AppWidget的識別id以及更新內容(remoteview)。
2. 在AppWidgetManger通知AppWidgetService哪些AppWidgetId需要更新View。
3. 透過aidl IPC機制,將widgetID跟RemoteView傳遞給AppWidgetHost。
4. AppWidgetHost會根據WidgetId找出放置該Widget的AppWidgetHostView,接着把RemoteView傳送過去。
- 本文出自IT能 編程交流論壇,原文地址:http://www.itneng.com/thread-2488-1-1.html
- 本文出自IT能 編程交流論壇,原文地址:http://www.itneng.com/thread-2488-1-1.html
RemoteViews並不是一個真正的View,而只是一個用於整合Widget裏layout呈現與view組件行爲的一個Wrapper class(也就是appWidget所要長得樣子),透過RemoteView把建立該Widget需要的resource ID和各個組件的事件封裝起來。 RemoteViews會通過進程間通信機制傳遞給AppWidgetHost。
因爲activity跟widget的運作機制的不同,應用程序AP裏的Avtivity要更新組件時,可以直接取得該組件進行更新。而因爲Widget架構是繼承appWidgetProvider,所以每個widget就是一個BroadcastReceiver。
在Widget裏並無法直接對於組件進行更新,因爲Widget實際畫面是在Launcher AppWidgetHostView上呈現,故實際對於Widget組件的操作都在AppWidgetHostView進行,所以需要藉由 RemoteView,主要目的在把Widget的所有組件進行封裝,透過RemoteView告訴Launcher你想要的AppWidget是長什麼 樣子又因爲Widget跟Launcher處在不同的pr
- 本文出自IT能 編程交流論壇,原文地址:http://www.itneng.com/thread-2488-1-1.html
RemoteViews並不是一個真正的View,而只是一個用於整合Widget裏layout呈現與view組件行爲的一個Wrapper class(也就是appWidget所要長得樣子),透過RemoteView把建立該Widget需要的resource ID和各個組件的事件封裝起來。 RemoteViews會通過進程間通信機制傳遞給AppWidgetHost。
因爲activity跟widget的運作機制的不同,應用程序AP裏的Avtivity要更新組件時,可以直接取得該組件進行更新。而因爲Widget架構是繼承appWidgetProvider,所以每個widget就是一個BroadcastReceiver。
在Widget裏並無法直接對於組件進行更新,因爲Widget實際畫面是在Launcher AppWidgetHostView上呈現,故實際對於Widget組件的操作都在AppWidgetHostView進行,所以需要藉由 RemoteView,主要目的在把Widget的所有組件進行封裝,透過RemoteView告訴Launcher你想要的AppWidget是長什麼 樣子又因爲Widget跟Launcher處在不同的pr
- 本文出自IT能 編程交流論壇,原文地址:http://www.itneng.com/thread-2488-1-1.html