偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Mobile Widget到底是個什么玩意?

移動開發(fā)
Widget 是一個廣泛的概念,從其字面意思可以翻譯成小物件,小工具,小軟件。Widget的實現(xiàn)可以多種多樣,但是都有一個共同特性,即可以源碼復用。換句話說,Widget軟件只要開發(fā)一次,便可以在具有該Widget運行引擎平臺下完美的運行,具有完全一樣的功能,UI風格和用戶體驗方式。

Widget與移動設(shè)備

Widget是什么?

Widget 是一個廣泛的概念,從其字面意思可以翻譯成小物件,小工具,小軟件。Widget的實現(xiàn)可以多種多樣,但是都有一個共同特性,即可以源碼復用。換句話說,Widget軟件只要開發(fā)一次,便可以在具有該Widget運行引擎平臺下完美的運行,具有完全一樣的功能,UI風格和用戶體驗方式。

從 Widget的實現(xiàn)方式上來說主要有兩種,一種是基于DHTML, JAVASCRIPT和CSS技術(shù)的Widget。另一種是基于Adobe Flash技術(shù)的Widget。目前大多數(shù)Widget實現(xiàn)還是基于前者,尤其是目前日漸流行的移動設(shè)備上的Widget技術(shù)均指Web Widget。

Widget的特點

  • 小尺寸:Widget的尺寸通常都不大,并且運行速度比較快,占用的系統(tǒng)資源也較少。
  • 形式多樣:Widget的展現(xiàn)方式可以多種多樣,可以是一個懸浮在窗口里的小圖標,可以是占用全屏的全屏應(yīng)用,也可以是插入某個應(yīng)用子窗口中的小程序。
  • 功能多樣:Widget應(yīng)用可以提供的功能可以多種多樣(依賴Widget引擎提供的功能),如提供新聞資訊閱讀,視頻觀看,系統(tǒng)狀態(tài)監(jiān)視,天氣預報,股票信息,時鐘,聯(lián)系人管理,短信接收發(fā)送等。
  • 美觀:Widget應(yīng)用設(shè)計的一般都比較漂亮,并且具有很好的用戶體驗和操作方式。
  • 個性化強:由于Widget的小尺寸和多樣的形式和功能,因此用戶可以隨意的安裝、擺放和設(shè)置Widget,達到個性化的Widget展示和使用效果。
  • 開發(fā)方便:由于大多數(shù)Widget都是基于Web技術(shù)或者Flash技術(shù),并且這兩種技術(shù)都已經(jīng)發(fā)展成熟,提供大量的集成開發(fā)環(huán)境以及可以復用的代碼。因此,開發(fā)人員可以很快速的開發(fā)出功能強大、界面美觀的Widget應(yīng)用。

Widget應(yīng)用

  • 桌面電腦上的Widget
    • Yahoo Widget
    • Mac OS dashbord
    • Windows Vista側(cè)邊欄
    • Windows 7桌面小工具
  • 移動終端上的Widget
  • 個性化首頁中的Widget
    • Netvibes
    • iGoogle
  • 博客中的Widget

移動平臺上的Widget規(guī)范(Web Widget)

目前,移動平臺上支持的Widget運行環(huán)境主要遵循三套規(guī)范:W3C Widget規(guī)范、BONDI Widget規(guī)范和JIL Widget規(guī)范。

  • W3C Widget規(guī)范

該規(guī)范是由W3C組織制定,包含6個子規(guī)范,主要定義了Widget的運行時狀態(tài),打包和配置,數(shù)字簽名,自動升級,以及核心API和事件處理。

  • BONDI Widget規(guī)范

該規(guī)范由OMTP組織制定,對W3C Widget規(guī)范進行了擴充。嚴格定義了Widget的安全驗證體系,豐富了API接口。目前W3C組織考慮將BONDI規(guī)范納入到標準中。

  • JIL Widget規(guī)范

該規(guī)范是由中國移動、沃達豐、軟銀以及Verizon共同提出和定義的Widget規(guī)范。該規(guī)范目前主要是被中國移動的BEA平臺所支持。

Widget引擎

Widget引擎的作用

Widget引擎為安裝、運行、管理、升級,驗證Widget應(yīng)用提供了一整套完整的框架體系。

  • 安裝

Widget的發(fā)布方式可以多種多樣,可以是基于Web頁面的發(fā)布方式也可以是基于安裝包的發(fā)布方式,因此Widget引擎需要對各種發(fā)布方式兼容,將用戶的Widget應(yīng)用安裝和部署到當前的Widget運行環(huán)境中。

  • 運行

Widget應(yīng)用有其自身的生命周期(初始化,運行,暫停,恢復,終止),因此Widget引擎有責任管理每個Widget應(yīng)用的生命周期,在Widget不同的階段執(zhí)行Widget內(nèi)部定義的事件處理代碼。

  • 管理

Widget引擎負責像用戶提供已安裝Widget應(yīng)用的管理功能,用戶可以通過Widget引擎查看當前運行的Widget運行狀態(tài),占用的系統(tǒng)資源,終止應(yīng)用,運行應(yīng)用以及刪除應(yīng)用。

  • 升級

Widget引擎會根據(jù)Widget的配置文件定期的檢測Widget的版本,并且動態(tài)的更新Widget應(yīng)用。

  • 驗證

出于安全性的考慮,Widget應(yīng)用都需要進行簽名,并且需要顯示的聲明其需要使用的特殊功能接口。并且在運行時刻,Widget引擎需要對Widget調(diào)用受限接口的合法性進行驗證。

Widget引擎與瀏覽器的關(guān)系

由于Web Widget應(yīng)用采用DHTML、JAVASCRIPT和CSS技術(shù)實現(xiàn),因此運行Widget需要瀏覽器引擎作為支持。但是通常的瀏覽器引擎不足以支撐 Widget的應(yīng)用。比如:Widget規(guī)范中嚴格的定義了Widget的打包方式,尤其固有的配置和部署方式,通常的瀏覽器引擎是無法識別并且按照規(guī)范要求正確安裝和部署的。某些Widget規(guī)范中定義了Widget應(yīng)用對設(shè)備能力的訪問,這也是通常瀏覽器引擎所不支持的。因此,如果瀏覽器需要支持某個特定Widget規(guī)范需要對瀏覽器引擎進行擴展,對Widget規(guī)范中定義的打包發(fā)布、升級安裝、安全驗證以及設(shè)備相關(guān)的API進行擴展和支持。

這里還有一類Widget不需要訪問設(shè)備功能,并且并不遵循某套特定的Widget規(guī)范,而只是以Web頁面中的一個小控件或者小程序形式出現(xiàn),該 Widget應(yīng)用是不需要對瀏覽器做擴展。但由于沒有一套標準統(tǒng)一的規(guī)范標準作為支持,因此只能由該站點開發(fā)者自己去設(shè)計并且開發(fā),不具有廣泛性。

Widget引擎框架設(shè)計

這里的Widget引擎框架主要是以Android平臺上的Widget引擎的設(shè)計為基礎(chǔ),所支持的標準不限(可包括W3C,BONDI,JIL規(guī)范)。

Widget引擎框架

NewImage
  • Widgets

如上圖所示,Widget表示該Widget引擎所支持的各種Widget應(yīng)用,該應(yīng)用采用DHTML, JAVASCRIPT, CSS技術(shù)編寫和實現(xiàn)。該Widget引擎所支持的Widget種類完全依賴于APIs Implement部分。

  • Widget Module Loader

模塊載入器的主要作用有兩個:第一,負責各個已實現(xiàn)的Widget規(guī)范API模塊的初始化。第二,負責在瀏覽器DOM樹中注冊載入的API模塊對象,以使得Widget應(yīng)用中可以使用相應(yīng)的接口、對象和屬性。

  • Application Management

應(yīng)用程序管理模塊負責Widget應(yīng)用的生命周期管理、應(yīng)用程序的下載安裝,以及應(yīng)用程序的刪除。應(yīng)用程序管理模塊與Widget DOM對象有緊密聯(lián)系。比如:Widget應(yīng)用在初始化階段為resume事件注冊了回調(diào)函數(shù),在該函數(shù)中會對暫停時的應(yīng)用數(shù)據(jù)進行恢復操作。應(yīng)用程序管理模塊在接收到Widget的恢復事件時,有責任調(diào)用該應(yīng)用注冊的resume回調(diào)函數(shù),并且執(zhí)行其定義的恢復操作。

  • Security Management

安全管理模塊負責Widget應(yīng)用的安全驗證。比如在Widget應(yīng)用安裝時,安全管理模塊需要對Widget應(yīng)用簽名的合法性進行驗證,并且對 Widget聲明的設(shè)備接口使用權(quán)限進行驗證。當Widget運行時,Widget應(yīng)用訪問某個設(shè)備接口(比如Camera),安全管理模塊需要對該應(yīng)用是否有權(quán)訪問該設(shè)備接口進行驗證。

  • APIs Implement

API實現(xiàn)包含了各個Widget引擎需要支持的Widget規(guī)范的底層實現(xiàn)。該部分的實現(xiàn)可以是純JAVA實現(xiàn)、可以是JAVASCRIPT和JAVA混合實現(xiàn)、可以是JAVA和C/C++混合實現(xiàn)、亦可以是純C/C++實現(xiàn)。

Widget引擎實現(xiàn)方式

基于WebKit引擎的擴展實現(xiàn)

該實現(xiàn)方式直接修改和擴展WebKit引擎,在引擎內(nèi)部創(chuàng)建widget的DOM對象,并且提供抽象的調(diào)用方法。除此之外,需要在WebKit引擎中實現(xiàn)對各個規(guī)范模塊的調(diào)用機制。

  • 基于JAVA語言的模塊調(diào)用

該實現(xiàn)方式需要對WebKit引擎實現(xiàn)JAVASCRIPT語言和JAVA語言之間的平滑調(diào)用機制。即Widget應(yīng)用訪問widget對象的某個API接口時,WebKit引擎需要將該SCRIPING對象動態(tài)的轉(zhuǎn)換成相應(yīng)的JAVA對象,并且調(diào)用其相應(yīng)的方法。并且,將該JAVA方法執(zhí)行后的結(jié)果動態(tài)的轉(zhuǎn)換成JAVASCRIPT對象,并且返回給Widget應(yīng)用。

采用該機制實現(xiàn)的API模塊均用可采用JAVA語言來實現(xiàn)。因此,該實現(xiàn)方式具有實現(xiàn)速度快的特點,但是也正因為與JAVA語言的緊密關(guān)系移植性不好。

  • 基于C/C++語言的模塊調(diào)用

所有的API模塊的擴展均采用C/C++語言來實現(xiàn),這類似gears的實現(xiàn)方式。引擎內(nèi)幕會將Widget應(yīng)用使用的JAVASCRIPT方法動態(tài)轉(zhuǎn)換成定義的C/C++對象,并且執(zhí)行相應(yīng)的方法。而后將返回結(jié)果轉(zhuǎn)換成JAVASCRIPT方法返回給Widget對象。

采用該機制實現(xiàn)的API模塊均采用C/C++語言來實現(xiàn),因此開發(fā)周期相對較長,但是具有良好的移植性。

采用WebKit引擎擴展實現(xiàn)方式,可以讓瀏覽器引擎原生的對Widget應(yīng)用進行支持,但是在每次WebKit升級時,需要對修改的代碼進行合并和再發(fā)布。

基于WebKit插件的擴展實現(xiàn)

該實現(xiàn)方式基于NPAPI插件擴展技術(shù)的基礎(chǔ)之上。將Widget的DOM對象實現(xiàn)包含在NPAPI插件中,當瀏覽器檢測到該對象的訪問時,動態(tài)的載入該NPAPI插件,并且將所有對Widget DOM對象的訪問操作均轉(zhuǎn)發(fā)給NPAPI插件來完成。

NPAI插件的實現(xiàn)方式如WebKit引擎擴展實現(xiàn)一樣,也有JAVA和C/C++兩種實現(xiàn)方式,這里不再重復。

采用該實現(xiàn)方式的擴展無需對WebKit引擎修改,但是需要按照NPAPI規(guī)范,實現(xiàn)完整的SCRIPTING插件。

基于C/S架構(gòu)的擴展實現(xiàn)

該實現(xiàn)方式采用借用了C/S設(shè)計模式的思想。在Widget引擎初始化階段會啟動一個內(nèi)部的服務(wù),該服務(wù)會監(jiān)聽系統(tǒng)中某個端口。Widget引擎運行時,如果訪問Widget對象的某個方法時,封裝的Widget JS對象會向服務(wù)端口發(fā)送方法請求。服務(wù)端接受請求后,首先會對請求進行合法性驗證和分析,然后調(diào)用相應(yīng)的接口來完成實際的操作。并且將結(jié)果以異步的方式返回給封裝的Widget JS對象,而由該對象通知Widget應(yīng)用操作結(jié)果。

C/S架構(gòu)的擴展實現(xiàn)也可以采用JAVA和C/C++實現(xiàn)方式,這里不再重復。

采用該方式實現(xiàn)的擴展有良好的靈活性,不同的Widget規(guī)范定義的Widget應(yīng)用只需要包含相應(yīng)的Widget封裝JS包即可正確運行。但是由于采用C/S模式的調(diào)用方式,因此在執(zhí)行效率上略低于直接調(diào)用的方式。

Browser&Widget

這部分對Browser的設(shè)計提出一個概念層面上的設(shè)計。如下圖所示:

NewImage
  • Table Manager

負責管理瀏覽器中各個Table頁面,每個Table頁面是一個獨立的Web頁面或者Widget應(yīng)用。

  • Bookmark Manager

負責管理書簽,該書簽包括用戶收藏的網(wǎng)站URL以及喜愛的RSS頻道和文章信息。

  • RSS Manager

負責RSS頻道的訂閱、RSS新聞列表、RSS頻道退訂

  • Plugin Manager

負責管理已經(jīng)安裝的瀏覽器插件

  • Notification Manager

負責事件通知管理,比如RSS新聞數(shù)據(jù)的更新通知,瀏覽器插件的升級通知,Widget升級通知等。

  • History Manager

負責記錄當前Table的運行數(shù)據(jù),包括訪問的URL歷史,當前窗口大小位置信息,可用于當瀏覽器crash后的狀態(tài)恢復操作。

  • Download Manager

負責瀏覽器的下載管理,包括android軟件的下載、安裝,Widget軟件的下載、安裝

  • Gesture Manager

負責手勢操作的自定義操作管理。

  • Thread Manager

為了加快瀏覽器的載入效率,每個Table在一個單獨的線程中運行,因此對線程的運行狀態(tài)需要一個統(tǒng)一管理機制。

  • Skin Manager

負責Browser外觀的管理,用戶可以通過該模塊動態(tài)的給系統(tǒng)更換皮膚和顯示方式。

  • Widget Manager

負責Widget引用的下載、安裝、刪除、以及運行時環(huán)境的支持。

責任編輯:佚名 來源: 姜江的博客
相關(guān)推薦

2010-07-02 10:10:09

Eclipse

2021-03-22 07:45:05

Sentinel微服務(wù)開源的項目

2010-07-05 15:56:01

EclipseRCPECF

2010-06-29 13:39:26

Eclipse什么玩意兒

2010-06-28 15:58:45

EclipseJavaIDE

2011-11-21 10:25:29

iCloud

2021-12-13 19:57:05

JNDIJava開發(fā)

2021-07-29 06:56:36

分布式系統(tǒng)腦裂

2020-10-29 07:03:56

Docker容器存儲

2021-01-29 12:24:22

電腦電子計算機

2020-10-25 20:05:29

Pythonyield開發(fā)

2022-02-16 20:04:08

容器KubernetesShim

2021-03-06 09:18:51

JS閉包函數(shù)

2024-07-03 12:04:42

C++this?

2025-10-29 07:33:13

2025-03-28 01:33:00

2024-02-07 12:35:00

React并發(fā)模式concurrent

2013-01-10 10:54:57

無線網(wǎng)絡(luò)WLANWi-Fi

2021-01-08 09:48:18

Pythonname變量

2022-05-04 08:38:32

Netty網(wǎng)絡(luò)框架
點贊
收藏

51CTO技術(shù)棧公眾號