国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android的網(wǎng)絡(luò)資源應(yīng)用探析

2016-04-14 13:36:23龍軍楊鵬
電腦知識(shí)與技術(shù) 2016年5期
關(guān)鍵詞:網(wǎng)絡(luò)資源

龍軍 楊鵬

摘要:該文就APP開發(fā)中本地應(yīng)用、Web應(yīng)用和混合應(yīng)用三種模式進(jìn)行研究,針對(duì)本地應(yīng)用和Web應(yīng)用調(diào)用網(wǎng)絡(luò)資源的主要技術(shù)進(jìn)行分析比較,提出對(duì)一些已使用應(yīng)用系統(tǒng)、建有豐富網(wǎng)絡(luò)資源的單位采用混合應(yīng)用模式的建議,即能實(shí)現(xiàn)App應(yīng)用功能,還可融合原有系統(tǒng)的資源,有效地拓展的應(yīng)用平臺(tái)的適用范圍和功能。

關(guān)鍵詞:網(wǎng)絡(luò)資源;Native App;Web App;Hybrid App

中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)05-0191-03

目前智能手機(jī)、平板電腦已經(jīng)大眾化,App應(yīng)用也快速發(fā)展起來(lái),越來(lái)越多的企事業(yè)單位開始建立自己的App應(yīng)用,將原有的業(yè)務(wù)系統(tǒng)、辦公管理系統(tǒng)、信息系統(tǒng)等拓展到App應(yīng)用已成為發(fā)展趨勢(shì),如何將不同系統(tǒng)融合到App應(yīng)用中也是急解決的問(wèn)題。

1 移動(dòng)設(shè)備應(yīng)用的主要技術(shù)

移動(dòng)設(shè)備的App應(yīng)用目前主要實(shí)現(xiàn)方式有本地應(yīng)用(Native App)、Web應(yīng)用(Web App)和混合應(yīng)用(Hybrid App)三種模式。

Native App即原生應(yīng)用,是根據(jù)特定操作系統(tǒng)而采用相應(yīng)的語(yǔ)言、框架和開發(fā)套件進(jìn)行開發(fā),充分利用設(shè)備特性,性能優(yōu)越。通常由“云服務(wù)器數(shù)據(jù)+APP應(yīng)用端”構(gòu)成,APP應(yīng)用所有的UI元素、數(shù)據(jù)內(nèi)容、邏輯框架均安裝在手機(jī)終端上,利用設(shè)備資源完成優(yōu)質(zhì)的交互操作。

Web App是一種框架型開發(fā)模式,通常由“HTML5云網(wǎng)站+APP應(yīng)用端”構(gòu)成,由于移動(dòng)Web支持各種標(biāo)準(zhǔn)的協(xié)議,使用HTML5、CSS3、JavaScript技術(shù)可將各種移動(dòng)交互與桌面任務(wù)有效地連接起來(lái),跨平臺(tái)優(yōu)勢(shì)顯著。APP應(yīng)用端只需安裝應(yīng)用的框架部份,數(shù)據(jù)則是運(yùn)行APP時(shí)通過(guò)云端服務(wù)將數(shù)據(jù)呈現(xiàn)給用戶。

Hybrid App 是整合上述兩種模式優(yōu)勢(shì)的混合模式應(yīng)用,同時(shí)使用網(wǎng)頁(yè)語(yǔ)言與程序語(yǔ)言編寫,包含Native視圖和Web視圖兩種方式,分為多View混合型、單View混合型、Web主體型三種類型。多View混合型的基本信息用Native View, 復(fù)雜的數(shù)據(jù)體現(xiàn)直接用Web View,即Native App為主Web技術(shù)為輔。單View混合型同時(shí)包括Native View和Web View,且視圖間相互覆蓋,常用于Native View中部分?jǐn)?shù)據(jù)接口不方便實(shí)現(xiàn)的頁(yè)面。Web主體型是在Native外殼內(nèi)嵌入純Html網(wǎng)頁(yè),與用手機(jī)瀏覽器操作接近,使用較少。

2 Native App網(wǎng)絡(luò)資源應(yīng)用的主要技術(shù)

Android平臺(tái)上Native應(yīng)用可采用套接字、HttpClient、JDBC等技術(shù)使用網(wǎng)絡(luò)資源、數(shù)據(jù)庫(kù)。

2.1 套接字

標(biāo)準(zhǔn)Java接口通過(guò)Java.net包中提供的ServerSocket和Socket兩個(gè)類構(gòu)建套接字,依據(jù)TCP/IP協(xié)議的傳輸層協(xié)議分為面向連接(TCP)和無(wú)連接(UDP)兩類。ServerSocket類用于面向連接應(yīng)用中服務(wù)器端構(gòu)造的等待連接套接字,在創(chuàng)建套接字時(shí)設(shè)置端口號(hào)參數(shù)同步綁定到指定端口,可設(shè)置客戶連接請(qǐng)求隊(duì)列長(zhǎng)度、確定服務(wù)器能同時(shí)監(jiān)聽的客戶數(shù)等。Socket用于客戶端套接字或服務(wù)器端響應(yīng)連接請(qǐng)求時(shí)創(chuàng)建的套接字。

采用TCP協(xié)議時(shí)要求App應(yīng)用一直在線且與服務(wù)器保持連接狀態(tài),消耗的資源較多,一般用在網(wǎng)絡(luò)游戲或適時(shí)在線的應(yīng)用開發(fā)中。采用UDP協(xié)議時(shí)由于數(shù)據(jù)不用確認(rèn),安全沒(méi)保證,常用在即時(shí)通訊應(yīng)用中。面向連接的App應(yīng)用端一般流程為用Socket連接服務(wù)器并創(chuàng)建套接字,基于該套接字創(chuàng)建用于接收數(shù)據(jù)的輸入流和用于發(fā)送數(shù)據(jù)的輸出流,并進(jìn)行數(shù)據(jù)的讀寫操作。

Socket s=new Socket(“服務(wù)器端的IP地址”,端口);//創(chuàng)建客戶端套接字

DataInputStream dis=new DataInputStream(new DataInputStream(s.getInputStream()));

DataOutputStream dos=new DataOutputStream(s.getOutputStream()); //創(chuàng)建數(shù)據(jù)輸入、輸出流

dis.readUTF();//讀數(shù)據(jù)

dos.writeUTF(“要寫的的內(nèi)容”);//寫數(shù)據(jù)

dos.flush();

2.2 HttpClient或HttpURLConnection及Web Service的使用

Android網(wǎng)絡(luò)應(yīng)用中使用最多的是Apache接口,核心的HttpClient類是一個(gè)完善的HTTP客戶端,提供了對(duì)HTTP協(xié)議的全面支持,通過(guò)HttpPost和HttpGet使用HTTP的GET和POST進(jìn)行訪問(wèn)服務(wù)器。針對(duì)多個(gè)請(qǐng)求要使用多線程,通過(guò)getHttpClient()方法為HttpClient配置一些基本參數(shù),再用ThreadSafeClientManaget來(lái)創(chuàng)建線程安全的HttpClient。

而HttpURLConnection是URLConnection的子類,在其基礎(chǔ)上增加了一些用于操作HTTP資源的方法。一般來(lái)說(shuō),簡(jiǎn)單的應(yīng)用可用HttpURLConnection,復(fù)雜的用HttpClient。

在服務(wù)器端可建立動(dòng)態(tài)網(wǎng)站,再根據(jù)提交的參數(shù)返回XML、JSON格式數(shù)據(jù)或簡(jiǎn)單字符串,如jsp文件中用request.getParameter(String)方法獲得App提交的參數(shù),進(jìn)行相應(yīng)數(shù)據(jù)處理后,用out.println(String)方法返回?cái)?shù)據(jù)供客戶端使用。

在服務(wù)器端也可建立用jsp、php、c++、C#等語(yǔ)言編寫的WebService,Web Service是一種基于可編程跨平臺(tái)的的web應(yīng)用程序,用于開發(fā)分布式、交互操作的應(yīng)用程序,可使用XML、XSD標(biāo)準(zhǔn)來(lái)描述、發(fā)布、發(fā)現(xiàn)、協(xié)調(diào)和配置應(yīng)用程序,使得運(yùn)行在不同機(jī)器上的應(yīng)用可相互交換數(shù)據(jù)或集成。Web Service 的調(diào)用有HttpGet、HttpPost、HttpSoap三種方式。

App應(yīng)用先創(chuàng)建HttpClient對(duì)象,再用要訪問(wèn)的Web文件網(wǎng)址創(chuàng)建HttpPost對(duì)象,在進(jìn)行相應(yīng)的傳遞參數(shù)處理后,提交給服務(wù)器的網(wǎng)頁(yè),并獲得返回的數(shù)據(jù)。這一過(guò)程中要注意Web文件和App文件的編碼處理,否則對(duì)中文會(huì)出現(xiàn)亂碼。Java在網(wǎng)絡(luò)中傳遞使用的是ISO-8859-1編碼,下面是android中通過(guò)HttpURLConnection獲得jsp網(wǎng)頁(yè)返回?cái)?shù)據(jù)的核心代碼。

String urlstr=new String("要訪問(wèn)的網(wǎng)址".getBytes("utf-8"),"ISO-8859-1");//將網(wǎng)址轉(zhuǎn)碼

URL url=new URL(urlstr);

HttpURLConnection urlCon=(HttpURLConnection)url.openConnection();//打開網(wǎng)址

nputStreamReader in=new InputStreamReader(urlCon.getInputStream());

BufferedReader buf=new BufferedReader(in);

while((line=buf.readLine())!=null) str+=line;//讀取Web返回的數(shù)據(jù)

str=new String(str.getBytes("ISO-8859-1"),"utf-8");//將數(shù)據(jù)轉(zhuǎn)碼

針對(duì)asp.net等使用utf-8編碼的Web應(yīng)用,可參照下面通過(guò)HttpClient獲得其返回的數(shù)據(jù)。

String urlstr=new String("要訪問(wèn)的網(wǎng)址".getBytes("utf-8"),"ISO-8859-1");//將網(wǎng)址轉(zhuǎn)碼

HttpClient hc=new DefaultHttpClient();

HttpGet get=new HttpGet(urlstr);//此處用get方式訪問(wèn)網(wǎng)址

HttpResponse hr=hc.execute(get);//獲得返回的數(shù)據(jù)

HttpEntity he=hr.getEntity();

str=EntityUtils.toString(he,"utf-8");//將數(shù)據(jù)轉(zhuǎn)碼

2.3 JDBC

JDBC是由一組用Java語(yǔ)言編寫的類和接口組成,為java層直接操作關(guān)系型數(shù)據(jù)庫(kù)提供了標(biāo)準(zhǔn)的API。用Android設(shè)備連接遠(yuǎn)程服務(wù)器上諸如MySQL、MS SQL server或Oracle等數(shù)據(jù)庫(kù),建議用webservice在服務(wù)器端將數(shù)據(jù)庫(kù)中的數(shù)據(jù)用json或xml進(jìn)行封裝后發(fā)送給Android,當(dāng)然也可以用JDBC直接連接數(shù)據(jù)庫(kù),就類似于原有的C/S架構(gòu)的應(yīng)用,安全性不高,數(shù)據(jù)量大時(shí)易出錯(cuò),且要求保持在線連接狀態(tài)。

使用JDBC時(shí)首先在工程的“Java Build Path”中加入相關(guān)數(shù)據(jù)庫(kù)的驅(qū)動(dòng)包,并在活動(dòng)中用import導(dǎo)入,再用Class.forName(驅(qū)動(dòng)類名)建立驅(qū)動(dòng),用DriverManager.getConnection(路徑,用戶名, 密碼)建立連接(Connection),最后進(jìn)行相關(guān)操作。

3 Web App網(wǎng)絡(luò)資源應(yīng)用的主要技術(shù)

隨著HTML5的發(fā)展及云服務(wù)普及,采用HTML5進(jìn)行Web App開發(fā)成為一種趨勢(shì),由于目前高端智能手機(jī)的內(nèi)置瀏覽器都是基于Webkit內(nèi)核,WebKit對(duì)JavaScript 支持力度和運(yùn)行速度都有所提高,在開發(fā)Web App時(shí),使用HTML5和CSS3技術(shù)做UI布局,要避免延用以往web開發(fā)中使用的HTML4和CSS2技術(shù),因?yàn)楹芏嘈Ч纭白赃m應(yīng)網(wǎng)頁(yè)設(shè)計(jì)”是無(wú)法實(shí)現(xiàn)的。自適應(yīng)網(wǎng)頁(yè)設(shè)計(jì)即應(yīng)用能自動(dòng)根據(jù)手機(jī)屏幕寬度、分辨率加載相應(yīng)的CSS文件、選擇不同的CSS規(guī)則,且布局、文本、圖片均能實(shí)現(xiàn)自動(dòng)縮放,實(shí)現(xiàn)頁(yè)面在不同設(shè)備上均能正常的顯示。

3.1 WebKit引擎和WebView組件

Webkit是一個(gè)開源瀏覽器引擎,幾乎所有的網(wǎng)站和手機(jī)都支持,Android提供的WebView組件就是基于WebKit來(lái)加載顯示網(wǎng)頁(yè)的,使用便捷,非常適合將一些定制的網(wǎng)站或觸摸屏版網(wǎng)站應(yīng)用集成到App應(yīng)用中。

WebView通過(guò)WebSettings類進(jìn)行屬性、狀態(tài)等的設(shè)置,WebViewClient類用于輔助WebView進(jìn)行處理各種通知、請(qǐng)求等事件,WebChormeClient類用來(lái)幫助WebView處理JavaScript的對(duì)話框、網(wǎng)站圖標(biāo)、加載進(jìn)度等。

3.2 HTML5與CSS3

HTML5提供了諸如地理位置感知 API、運(yùn)動(dòng)感應(yīng)事件、通用感應(yīng)器 API、觸控交互事件、WebSocket API、Messaging API 等支持Web 應(yīng)用擴(kuò)展的API。其離線應(yīng)用使WebApp在無(wú)網(wǎng)絡(luò)連接的情況下,仍然可以完成數(shù)據(jù)存儲(chǔ)及交換業(yè)務(wù),通過(guò)Navigator的屬性值和Online/Offline事件兩種方式進(jìn)行在線檢測(cè),用Cache Manifest確定WebApp離線時(shí)所需的資源,提供了Web Storage(用key_value對(duì)的形式)和Web SQL Database(見下示代碼)兩種本地?cái)?shù)據(jù)存儲(chǔ)。

webSettings.setDatabaseEnabled(true);

webSettings.setDatabasePath(this.getApplicationContext().getDir(數(shù)據(jù)庫(kù), Context.MODE_PRIVATE).getPath());

webSettings.setDomStorageEnabled(true);

通過(guò)Device Description Repository API這一統(tǒng)一的服務(wù)器API和基于CSS的兩種設(shè)備適配技術(shù),達(dá)到兼容不同設(shè)備,用合適的頁(yè)面布局體現(xiàn)內(nèi)容。

3. 3 Android與JavaScript的交互

手機(jī)的Android應(yīng)用可通過(guò)Web頁(yè)面的JavaScript實(shí)現(xiàn)交互,完成相互的功能處理和數(shù)據(jù)傳遞。首先在Android程序中建立接口,通過(guò)WebView的WebSettings.setJavaScriptEnabled(true)啟動(dòng)JavaScript。再在WebView中把一個(gè)實(shí)例添加到JavaScript的全局對(duì)象window中。

WebView.addJavascriptInterface(new JavaScriptInterface(),實(shí)例名);

并在JavaScriptInterface()類中定義方法public void runOnAndroidJavaScript(final String str){方法體}。最后在Web頁(yè)面的JavaScript中通過(guò)windows.實(shí)例名.runOnAndroidJavaScript(str)調(diào)用Android的函數(shù)。

4 Native應(yīng)用與Web應(yīng)用比較

1)Native App應(yīng)用與Web App應(yīng)用的特點(diǎn)

Native App應(yīng)用可調(diào)用UI控件及UI方法,可直接使用諸如攝像頭、GPS、藍(lán)牙、傳感器等硬件設(shè)備,調(diào)用語(yǔ)音、短信、視頻、通信錄等資源。安裝包中有UI、框架及數(shù)據(jù),較大,升級(jí)也需根據(jù)版本下載更新,當(dāng)用戶無(wú)法上網(wǎng)時(shí)可訪問(wèn)應(yīng)用中以前下載的數(shù)據(jù)。

Web App應(yīng)用打開應(yīng)用均要通過(guò)APP框架向云網(wǎng)站索取UI及實(shí)時(shí)的最新云端數(shù)據(jù),訪問(wèn)速度受手機(jī)終端上網(wǎng)的限制,每次使用均會(huì)消耗上網(wǎng)流量;安裝包只包含框架文件,數(shù)據(jù)內(nèi)容則放在云端,無(wú)須頻繁升級(jí)APP應(yīng)用,與云端實(shí)現(xiàn)的是實(shí)時(shí)數(shù)據(jù)交互。

2)Native App應(yīng)用常用在游戲、電子雜志、管理應(yīng)用、物聯(lián)網(wǎng)等無(wú)需經(jīng)常更新程序框架的APP應(yīng)用開發(fā)中。由于游戲要使用許多設(shè)備API或平臺(tái)API,占用較多的資源,用戶對(duì)應(yīng)用的視覺(jué)和操作效果要求高,常采用Native App開發(fā)。使用攝像頭時(shí),Native App開發(fā)可簡(jiǎn)化拍攝的過(guò)程,先在手機(jī)上對(duì)照片做預(yù)處理,當(dāng)需要時(shí)再通過(guò)HTTP將照片上傳給服務(wù)器。要使用傳感器,如屏幕的旋轉(zhuǎn)、檢測(cè)移動(dòng)、溫度、壓力等。訪問(wèn)手機(jī)的文件系統(tǒng),啟用或保存本地?cái)?shù)據(jù),如通訊錄、音頻、視頻、圖片、文件等。

3)Web App應(yīng)用常用在電子商務(wù)、金融、新聞資訊、企業(yè)集團(tuán)需經(jīng)常更新內(nèi)容的APP應(yīng)用開發(fā)中。目前Web App提供了豐富的功能接口,使其擁有Native App一樣功能,還能跨平臺(tái)使用,但要考慮到適配不同平臺(tái)的網(wǎng)頁(yè)應(yīng)用設(shè)計(jì),平衡平臺(tái)間軟硬件差異帶來(lái)的交互特性和系統(tǒng)習(xí)慣的差別,及不同設(shè)備的分辨率。

最后,由于Hybrid App有Native APP調(diào)用終端設(shè)備、交互體驗(yàn)及Web App跨平臺(tái)的優(yōu)勢(shì),開發(fā)成本低、周期短,逐漸成為APP開發(fā)的主要模式,尤其針對(duì)諸如政府、高校、圖書館等已經(jīng)建設(shè)有較為豐富網(wǎng)絡(luò)資源的單位來(lái)說(shuō),采用這種模式可以用較小的成本進(jìn)行資源的拓展利用,并將一些共享資源做成公共的通用接口,供其他應(yīng)用使用、共享,提高資源的利用率。

參考文獻(xiàn):

[1] 姜文波, 龍軍. Android平臺(tái)的套接字應(yīng)用淺析[J].科技信息,2014(9).

[2] 龍軍. 基于Java語(yǔ)言的流式套接字編程探析[J].電腦知識(shí)與技術(shù),2013,9(10).

[3] 顧春來(lái). APP應(yīng)用程序開發(fā)模式探究[J].硅谷,2014,5(149).

[4] 周其飛. 基于Android平臺(tái)的Hybrid App開發(fā)[J].電腦編程技巧與維護(hù),2014,15(9).

[5] 黃悅深. 基于HTML5的移動(dòng)Web App開發(fā)[J].圖書館雜志,2014(7).

猜你喜歡
網(wǎng)絡(luò)資源
網(wǎng)絡(luò)資源在阿拉伯語(yǔ)教學(xué)中的應(yīng)用及成效分析
基于預(yù)測(cè)的虛擬網(wǎng)絡(luò)資源分配方法
網(wǎng)絡(luò)資源在高中班級(jí)管理中的運(yùn)用
談網(wǎng)絡(luò)資源在大學(xué)計(jì)算機(jī)教學(xué)中的應(yīng)用
對(duì)等網(wǎng)絡(luò)資源搜索模型研究
马尔康县| 怀安县| 高碑店市| 信丰县| 孟州市| 沂源县| 岫岩| 鲁山县| 松阳县| 湘西| 芜湖县| 天峻县| 济南市| 桐梓县| 会宁县| 东明县| 水城县| 三原县| 永丰县| 黄石市| 常宁市| 陆川县| 甘德县| 尼勒克县| 清水县| 卓尼县| 灵丘县| 渭源县| 西畴县| 芜湖市| 化隆| 广元市| 建瓯市| 玛多县| 罗山县| 略阳县| 东乡县| 谷城县| 龙门县| 博白县| 拜城县|