青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

life02

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  197 隨筆 :: 3 文章 :: 37 評論 :: 0 Trackbacks
http://piziyuyu.blog.163.com/blog/static/96323832201011863647922/

About Widget 2

上一篇是對Dev Guide中關于SDK的翻譯,這篇文章的目的就是對AppWidget有一個深入的介紹。

一、首先介紹一下在開機過程中系統(tǒng)對AppWidget做了什么

SystemServer.java運行到init2()的時候,通過SystemManager.addService(Context.AppWidget_Service,appWidget)AppWidgetService服務加到服務隊列里面,當所有服務加載完畢后會調用appWidgetF.systemReady(safeMode)進入到AppWidgetService.java,在這個方法中做了三件事:

1、遍歷所有的安裝包,找到符合條件的ACTIONACTION_APPWIDGET_UPDATE<meta-data android:name="android.appwidget.provider"/>receiver,解析相關信息,保存到本地數據成員中。

2、讀取本地文件數據:/data/system/appwidgets.xml,所有已安裝到桌面的widget的信息都保存在這個文件里。讀出來,也保存到本地數據成員里。

3、注冊了三個消息:ACTION_BOOT_COMPLETED(系統(tǒng)啟動到桌面就會發(fā)送此消息),ACTION_PACKAGE_ADDED(有新 APK包安裝到系統(tǒng)),ACTION_PACKAGE_REMOVED(有APK包被刪除)。當系統(tǒng)啟動到桌面后,AppWidgetService接收 到了ACTION_BOOT_COMPLETED消息,它會去檢查本地數據成員,如果有已經安裝到桌面的widget,它會上發(fā) ACTION_APPWIDGET_ENABLEDACTION_APPWIDGET_UPDATE消息。如果有widget設置了updatePeriodMillis的屬性,它就會開始計時(這個是通過AlarmManager來實現(xiàn)的),到時間時,就會再次發(fā)送ACTION_APPWIDGET_UPDATE消息。

 

二、與AppWidget相關的類有:

RemoteViews.java   

 * A class that describes a view hierarchy that can be displayed in

 * another process. The hierarchy is inflated from a layout resource

 * file, and this class provides some basic operations for modifying

 * the content of the inflated hierarchy

上面是Google給的關于RemoteViews的解釋,大家不要被它的名字給欺騙了,說白了它就是作為一個描述view信息的載體,通過它可以在進程間傳遞,在另一個進程中由AppWidgetHostView去獲取RemoteViews所承載的信息并且顯示出來。

AppWidgetProvider.java

 這個類繼承BroadcastReceiver,并且重寫了它里面的方法,里面通常使用的是onUpdate()方法對AppWidget更新

AppWidgetManager.java

 * Updates AppWidget state; gets information about installed AppWidget providers and other

 * AppWidget related state.

 

AppWidgetHost.java

* AppWidgetHost provides the interaction with the AppWidget service for apps,

 * like the home screen, that want to embed AppWidgets in their UI.

AppWidgetHostView.java

* Provides the glue to show AppWidget views. This class offers    automatic animation

 * between updates, and will try recycling old views for each incoming

 * {@link RemoteViews}.

AppWidgetService.java

具體實現(xiàn)AppWidgetHostAppWidgetManager中的方法。

關于AppWidget的深入理解2 - piziyuyu - piziyuyu的博客

對上圖的一個解釋:

當我們把一個AppWidget放在桌面的時候其實這個AppWidget是停靠在Launcher的一個View上面,被停靠的這個Activity我理解為“宿主”,而AppWidget是運行在一個獨立的進程中,所以AppWidget要與這個“宿主”通信的話就需要IPC

RemoteViewsAppWidgetView信息傳遞“宿主”的時候,通過AppWidgetHost獲得AppWidgetHostView的實例,這樣 按照RemoteViews中的信息將AppWidgetView繪制到“宿主”中來。至此,我們的Widget就顯示在“宿主”上了。

下圖是對AppWidgetManagerAppWidgetHost做的解釋,作為管理類,各自完成不同的管理任務。 
關于AppWidget的深入理解2 - piziyuyu - piziyuyu的博客
 

在網上看到這么一段關于AppWidget的比喻,貼來大家看看

Android AppWidget框架妄析: Android中的借尸還魂


Android, AppWidget, 借尸還魂

由于初識Android不久,所以一切分析皆可有誤,故而只能為之妄析。 題目起的比較恐怖,然非我本意。 只是實在找不到更加貼切的,可以對AppWidget框架一針而見血的比喻了。 閑話少說,且看如何個借尸還魂。

首看魂者何來。 大家都知道Widget的宗旨,就是要在同一屏幕(界面上)運行多個具有獨立功能的小插件,從而豐富功能的同時簡化操作。那么,在Android4大組件中,何人可以充當該角色,抑或需要再獨立設計一個組件? Activity 非也!! ActivityUI呈現(xiàn)和用戶交互的一個組件,具有獨特的Task管理機制,同一時刻,框架只允許一個Activity與用戶交互并呈現(xiàn)。 Widget的特點是,多實例的并發(fā)交互性。 所以,Activity不能滿足,不能滿足同時多個Widget的并發(fā)交互和呈現(xiàn)。 既然不能前臺,那么只能在后臺Running Service or BroadCastReceiver 由于Widget需要處理眾多的事件交互,所以,BroadCastReceiver更加合適。 既然找到了合適的,那么也就沒有必要再創(chuàng)造新的。 夠用就可以,不是越多越好,這也是軟件設計的準則。 OK AppWidget的魂已經找到,BroadCastReceive也, 所以,Android中的AppWidget其本質就是一個BroadCastReceive組件。

再看尸者何來。 尸者,陽間之物也。 雖已死(本身無用),卻能見光(呈現(xiàn))也。 任何一個期望在其之上運行Widget的前臺的應用(Activity),其實就是一個Widget宿主。 其本身而言,無任何Widget功能,但卻可以和用戶交互并呈現(xiàn),從此點而言,可謂尸也。 Android中的AppHost即為尸也。

最后我們看如何還魂。 AppWidget為魂,功能強大,為所欲為,但卻始終位于陰間(后臺運行),無法見日,故而眾人不可觀之。 AppHost為尸,雖見天日,卻已無所可為。 我們何不將此二者互補那?? 但是,陰陽兩隔,必須使用特殊的方式, 此即為還魂術。 通過還魂術,可使得魂寄于尸而見天日。 還魂術就是陰間通往陽間的大道。 Android中的還魂術即為RemoteView Android中,由于進程邊界的存在,使得AppWidgetAppHost也陰陽兩隔,默認是無法直接溝通的。 采用RemoteView,讓AppWidget將一切需要呈現(xiàn)的描述構建到RemoteView中,AppHost中再基于該描述,重新創(chuàng)建于屬于自己進程中的View進而顯示。

 

 

 

 

 

 

 

 


posted on 2012-03-04 18:45 life02 閱讀(549) 評論(0)  編輯 收藏 引用 所屬分類: laucher開發(fā)(轉載)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日精品一区视频| 欧美一区二区三区日韩视频| 欧美日本久久| 奶水喷射视频一区| 免费一区二区三区| 麻豆成人在线| 欧美人与性动交cc0o| 欧美午夜不卡在线观看免费 | 国内精品福利| 国产亚洲欧美在线| 悠悠资源网久久精品| 亚洲欧洲一区二区三区在线观看| 欧美日韩精品在线| 国产精品久久久久毛片软件| 国产精品视频免费观看| 国产一区二区三区四区| 亚洲激情第一页| 亚洲一区欧美一区| 久久中文欧美| 日韩视频一区二区三区| 午夜精品久久久久久久白皮肤| 久久高清免费观看| 欧美精品成人一区二区在线观看| 国产精品麻豆va在线播放| 在线播放国产一区中文字幕剧情欧美 | 久久免费国产精品| 亚洲第一在线综合网站| 日韩午夜中文字幕| 久热精品视频在线观看一区| 国产精品地址| 亚洲精品日韩一| 久久久国产一区二区三区| 性色av一区二区三区在线观看| 每日更新成人在线视频| 欧美一区亚洲一区| 亚洲区第一页| 久久久久久久久久久一区| 欧美三级韩国三级日本三斤| 在线观看欧美亚洲| 久久久成人网| 亚洲欧美日本另类| 欧美日韩在线视频一区二区| 18成人免费观看视频| 欧美一区二区三区四区视频| aa国产精品| 欧美精品手机在线| 国产精品一区在线播放| a91a精品视频在线观看| 免费高清在线一区| 亚洲欧美国产毛片在线| 欧美三级中文字幕在线观看| 亚洲人午夜精品| 欧美jjzz| 久久中文字幕一区| 激情综合久久| 久久久精品国产一区二区三区| 中日韩美女免费视频网站在线观看| 你懂的视频一区二区| 在线播放国产一区中文字幕剧情欧美 | 亚洲免费影院| 国产精品国产三级国产aⅴ浪潮| 亚洲靠逼com| 亚洲黄色视屏| 欧美人交a欧美精品| 一区二区三区黄色| 这里只有精品电影| 国产精品视频yy9299一区| 亚洲欧美色婷婷| 亚洲欧美自拍偷拍| 免费观看成人www动漫视频| 亚洲国内高清视频| 久久成人精品无人区| 国产亚洲精品bt天堂精选| 久久av最新网址| 欧美在线观看一二区| 狠狠色狠狠色综合人人| 麻豆成人在线| 国产精品99久久久久久久女警| 欧美视频观看一区| 欧美一区2区三区4区公司二百 | 欧美黑人在线播放| 欧美精品一区二区三| 亚洲影音一区| 欧美中文字幕视频在线观看| 影音先锋亚洲一区| 欧美黄色免费网站| 亚洲无人区一区| 欧美一乱一性一交一视频| 亚洲宅男天堂在线观看无病毒| 一区二区不卡在线视频 午夜欧美不卡在 | 一区二区三区在线看| 91久久精品久久国产性色也91| 亚洲日本无吗高清不卡| 国产精品爱啪在线线免费观看| 欧美一级在线视频| 麻豆av一区二区三区久久| 亚洲一区二区三区免费视频| 欧美一级夜夜爽| 日韩亚洲欧美在线观看| 性欧美在线看片a免费观看| 亚洲精品免费在线播放| 亚洲一卡久久| 亚洲精品孕妇| 亚洲欧美视频在线| 亚洲人成欧美中文字幕| 亚洲欧美日韩高清| 一区二区欧美日韩| 欧美一区亚洲一区| 亚洲性视频h| 免费看的黄色欧美网站| 久久精品二区三区| 欧美日本免费| 欧美激情一区二区三区在线 | 亚洲三级电影在线观看| 亚洲免费视频观看| 在线视频欧美精品| 免费在线视频一区| 久久久www成人免费无遮挡大片| 欧美激情精品久久久久久黑人 | 亚洲伊人伊色伊影伊综合网| 美女日韩在线中文字幕| 久久婷婷国产综合尤物精品| 国产精品欧美日韩久久| 99re66热这里只有精品4| 91久久精品国产91性色| 久久一区二区三区国产精品 | 看欧美日韩国产| 久久免费国产精品| 国产日韩欧美亚洲一区| 中文日韩电影网站| 欧美日韩另类在线| 欧美激情1区2区3区| 亚洲视频在线观看三级| 久久综合久久综合久久综合| 国产精品无码永久免费888| 亚洲精品免费观看| 亚洲精品偷拍| 欧美精品v日韩精品v韩国精品v | 免费精品99久久国产综合精品| 国产精品一区二区黑丝| 9色精品在线| 亚洲一区二区三区四区在线观看| 欧美激情一区二区在线 | 欧美11—12娇小xxxx| 麻豆久久久9性大片| 精品动漫3d一区二区三区| 久久久99精品免费观看不卡| 久久婷婷成人综合色| 伊人男人综合视频网| 美女黄毛**国产精品啪啪| 欧美福利电影在线观看| 亚洲乱码国产乱码精品精可以看 | 国产视频一区免费看| 欧美一区二区在线播放| 久久蜜桃av一区精品变态类天堂| 在线观看亚洲精品| 欧美激情国产高清| 一区二区三区欧美| 久久精品一区二区三区中文字幕| 精品成人久久| 欧美日韩精品免费看| 亚洲欧美日韩国产中文在线| 久久综合网络一区二区| 亚洲精品一区二区三区不| 国产精品国产成人国产三级| 欧美一区二区三区久久精品| 欧美黄色小视频| 午夜精品久久久久久久久| 精品9999| 国产精品视频第一区| 一本色道久久综合精品竹菊| 亚洲三级色网| 欧美一区精品| 麻豆成人91精品二区三区| 欧美在线观看一二区| 久久午夜电影网| 日韩午夜中文字幕| 国产精品一区=区| 欧美激情中文字幕在线| 欧美一区二区| 亚洲精品少妇30p| 久久久久久9999| 这里只有精品电影| 国产在线精品成人一区二区三区 | 久久婷婷色综合| 亚洲日本中文| 国产欧美一区二区视频| 欧美影视一区| 亚洲一区亚洲| 海角社区69精品视频| 欧美日韩专区在线| 久久视频在线视频| 亚洲资源av| 亚洲精品中文在线| 久久精品国产清高在天天线| 欧美激情精品| 欧美国产日韩亚洲一区| 一区二区三区 在线观看视频| 男女av一区三区二区色多| 新67194成人永久网站|