999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Android的駕校通軟件開發(fā)技術(shù)的研究與應(yīng)用

2013-12-31 00:00:00李新春

摘要:本文主要介紹百度個人云存儲(PCS)作為數(shù)據(jù)存儲服務(wù)器,百度轉(zhuǎn)碼技術(shù)實現(xiàn)Web網(wǎng)頁到WAP網(wǎng)頁轉(zhuǎn)換,ActivityManager優(yōu)化管理Activity等技術(shù)在基于Android的駕校通軟件開發(fā)過程中的實際應(yīng)用。

關(guān)鍵詞:百度個人云存儲(PCS) 百度轉(zhuǎn)碼技術(shù) Activity管理

0 引言

駕校通是基于Android系統(tǒng)開發(fā)的一款考試輔助軟件,它消除傳統(tǒng)的書本練習(xí)和網(wǎng)頁版練習(xí)軟件的不易攜帶、功能單一、網(wǎng)絡(luò)流量、網(wǎng)絡(luò)信號等各種因素的影響,集成現(xiàn)代電子考試的特點,包含最新的試題庫信息,如圖片題、單選題、多選題,提供多種方式練習(xí)功能,如章節(jié)練習(xí)、隨機練習(xí)、模擬練習(xí)、錯題集等功能,還集成一些常用的、實用的小工具供用戶使用,是駕校練習(xí)人員非常需要的一款實用軟件。

1 系統(tǒng)設(shè)計

1.1 系統(tǒng)設(shè)計模式 本軟件采用MVC(Model-View-

Controller)模式。Model為模型層,主要實現(xiàn)系統(tǒng)中的業(yè)務(wù)邏輯和數(shù)據(jù)訪問,通常可以用JavaBean或EJB來實現(xiàn)。View為視圖,用于向用戶展示數(shù)據(jù)。Controller層是Model與View之間溝通的橋梁,它是將用戶請求轉(zhuǎn)發(fā)給模型層,經(jīng)過處理后把結(jié)果返回到界面層展現(xiàn)的一個中間層,實現(xiàn)View層跟Model層的協(xié)同工作。

1.2 軟件配置環(huán)境 運行環(huán)境:android2.2及以上版本

開發(fā)工具:eclipse 3.7

Java虛擬機版本:Windows下或Linux下JDK1.6以上版本.

Ant:Version 18

2 駕校通軟件中主要技術(shù)的應(yīng)用

2.1 使用SQLite數(shù)據(jù)庫 SQLite是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),SQLite引擎主要的通信協(xié)議是在編程語言內(nèi)的直接API調(diào)用。對于軟件整體簡單性設(shè)計、系統(tǒng)內(nèi)存消耗在有明顯性能優(yōu)越性。SQLite雖然很小巧,但是對于SQL語句的支持不會遜色于其他開源數(shù)據(jù)庫,同時它還支持事務(wù)處理功能等等。

SQLite具有以下優(yōu)點:輕量級:SQLite是進程內(nèi)的數(shù)據(jù)庫引擎,它的核心引擎本身不依賴第三方的軟件,使用時一般只需要帶上它的一個動態(tài)庫。單一文件:即是數(shù)據(jù)庫中所有的信息(例如表、視圖等)均包含在一個完整的文件內(nèi)。此文件可以復(fù)制到其它目錄或其它機器上,均可正常使用。此外,SQLite具有跨平臺/可移植性,安裝部署極為方便。

基于以上SQLite特點與駕校考試的需求,本軟件中附帶的考試題庫存放在本地SQLite數(shù)據(jù)庫中,使得用戶進行練習(xí)和模擬測試不受到必須聯(lián)網(wǎng)和瀏覽的限制,軟件響應(yīng)速度極快。

2.2 使用百度個人云存儲(PCS) 百度個人云存儲是百度公司推出的針對開發(fā)者的云存儲服務(wù)。開發(fā)者開發(fā)的應(yīng)用在得到用戶授權(quán)后,可以通過調(diào)用PCS Open API的方式為用戶提供文件和數(shù)據(jù)管理服務(wù),完成用戶文件和數(shù)據(jù)的存儲、管理、備份、同步等功能。在百度服務(wù)器端,PCS以高可靠的安全認證機制以及數(shù)據(jù)冗余備份保護機制保障用戶的數(shù)據(jù)安全,因此開發(fā)者可以毫無顧慮地將應(yīng)用推薦給用戶使用,而不必擔心用戶數(shù)據(jù)泄露或者丟失。開發(fā)者無需負擔巨大的存儲成本,就能獲得高速、高可用、高穩(wěn)定、高安全性的百度服務(wù),在此基礎(chǔ)上輕松快速地開發(fā)出有創(chuàng)意的應(yīng)用。基于百度個人云存儲技術(shù)優(yōu)點,本軟件“在線文庫”中使用了百度的個人云存儲技術(shù),方便用戶從服務(wù)器上下載所需資料。

開發(fā)百度云存儲步驟如下:①登錄官方網(wǎng)址www.developer.com上創(chuàng)建一個開發(fā)者賬號。創(chuàng)建應(yīng)用“測試”,獲取API Key和Secret Key。申請開通PCS API的權(quán)限。下載Baidu-PCS-SDK-Android-L2-2.1.0.zip解壓后把相關(guān)jar文件附加到本地的應(yīng)用項目中。

②獲取Access_token。Access_token 可以簡單的理解為操作百度個人云存儲必須的授權(quán)碼,官方推薦使用OAuth2.0方式來獲取Access_token。OAuth2.0是一個開放標準,第三方應(yīng)用得到用戶授權(quán)后,無需獲取用戶的用戶名和密碼便可以訪問該用戶在某一網(wǎng)站上存儲的個人的資源。

Access_token:用戶身份驗證和授權(quán)的憑證。第三方應(yīng)用在調(diào)用百度開放API之前,首先需要獲取Access_token。目前,百度OAuth2.0支持五種獲取Access_token的流程和一種刷新獲取Access_token方式,第三方可根據(jù)需求選取合適的方式。本軟件使用的是“Implicit Grant”這種方式來獲取Access_token。

Implicit Grant又稱User-Agent Flow,適用于所有無Server端配合的應(yīng)用(桌面客戶端需要內(nèi)嵌瀏覽器)。為了獲取Access_token,應(yīng)用需要將用戶瀏覽器到百度OAuth2.0授權(quán)服務(wù)的“https://openapi.baidu.com/oauth/

2.0/authorize”地址上,并帶上以下參數(shù):

client_id:必須參數(shù)。注冊應(yīng)用時獲得的API Key。

response_type:必須參數(shù)。此值固定為“token”。

redirect_uri:必須參數(shù)。其值是“oob”。

scope:非必須參數(shù)。以空格分隔的權(quán)限列表,若不傳遞此參數(shù),代表請求用戶的默認權(quán)限。關(guān)于權(quán)限的具體信息請參考“權(quán)限列表”。

state:非必須參數(shù)。用于保持請求和回調(diào)的狀態(tài),授權(quán)服務(wù)器在回調(diào)時(重定向用戶瀏覽器到“redirect_uri”時),會在Fragment中原樣回傳該參數(shù)。

display:非必須參數(shù)。登錄和授權(quán)頁面的展現(xiàn)樣式,默認為“page”。

force_login:非必須參數(shù),例如傳遞“force_login=1”,則加載登錄頁時強制登錄用戶輸入用戶名與口令,瀏覽器不會從cookie中讀取百度用戶的登陸狀態(tài)。

confirm_login:非必須參數(shù),例如傳遞“confirm_login=1”,若此時百度用戶已經(jīng)是處于登陸的狀態(tài),則會提示是否使用已當前登陸用戶對應(yīng)用授權(quán)。

為了加強安全性,會對跳轉(zhuǎn)到該授權(quán)頁面的Referer進行檢測,要求Referer必須與開發(fā)者創(chuàng)建應(yīng)用時注冊的“網(wǎng)站地址”或者在“OAuth安全設(shè)置”中所填寫的“根域名綁定”同域。

在瀏覽器中輸入如下地址:https://openapi.baidu.com/oauth/2.0/authorize?response_type=tokenclient_

id=UrPlY2RqDvsTEIvGrGZxktbqrediect_uri=oobscop

e=netdiskdisplay=popupstate=xxx,瀏覽器會跳轉(zhuǎn)到開發(fā)者登錄和開發(fā)者制制授權(quán)界面,開發(fā)者輸入賬號與密碼,登錄、授權(quán)后,在瀏覽器的地址欄中會得到如下格式的地址:http://openapi.baidu.com/oauth/2.0/login_success

#expires_in=2592000access_token=3.8f9d01b41abe88

686cc7105f8cab61f9.2592000.1372320849.3794308355-902080session_secret=ebf2511f1cde723af462dc3

ac4a1323esession_key=94rryYDFTnyBMYv%2FrqNET

oyj9ze3eHsc%2BWashxWIJwOmZ%2BihGBuAYaOPzh

69XYNw7eOXOI39rIioI1tX%2BHsi1gvooahaPjg%3Ds

cope=basic+netdiskstate=xxx

此時從上述地址中可以得到Access_token= 3.8f9d

01b41abe88686cc7105f8cab61f9.2592000.1372320849.3794308355-902080

③在項目中使用Access_token:百度個人云存儲開發(fā)關(guān)鍵代碼:

String s_accessToken =\"3.8f9d01b41abe88686cc7

105f8cab61f9.2592000.1372320849.3794308355-902080\";

String s_approot = \"/apps/駕校通/\";

PcsClient pscClient = new PcsClient(s_accessToken, s_approot);

pscClient.downloadToFile(remotepath, localpath); //從服務(wù)器上下載文件

List filelist = pscClient.list(netdisk_root); //從服務(wù)器上獲取文件列表

開發(fā)登錄百度網(wǎng)盤(http://pan.baidu.com)后,在這里可以方便的更新服務(wù)器的數(shù)據(jù)。

2.3 使用百度轉(zhuǎn)碼技術(shù) 為確保WAP可用性,必須對WAP搜索結(jié)果中的WEB網(wǎng)頁進行格式轉(zhuǎn)換,轉(zhuǎn)換為WAP網(wǎng)頁,使其能在移動終端瀏覽器被瀏覽,提高用戶的瀏覽速度和節(jié)省傳輸流量,本軟件調(diào)用了百度的轉(zhuǎn)碼技術(shù)。關(guān)鍵代碼如下:

RSSEntity rssEntity = list.get(position);

Intent intent = new Intent(CarInfoActivity.this,WebViewActivity.class);

//使用百度的轉(zhuǎn)碼技術(shù)(修改訪問的地址),使用頁面更適合手機的閱讀

intent.putExtra(\"resId\",\"http://gate.baidu.com/tc?from=opentcsrc=\"+uri);

intent.putExtra(\"isOpenInSelft\", true);

intent.putExtra(\"title\", rssEntity.getTitle());

startActivity(intent);

2.4 使用ActivityManager優(yōu)化管理Activity 在日常的Android的開發(fā)技術(shù)中,讓程序員感覺非常的頭疼是Acitvity的管理問題,因為在Android的系統(tǒng)中每一個用戶看到的界面都是由一個Activity來提供的,Activity的生存擁有自己的生存周期,一個Activity從它創(chuàng)建到結(jié)束需要經(jīng)歷onCreate,onResume,onPause,onStop,onDestory等階段,此過程中系統(tǒng)的開銷是不小的。在Android系統(tǒng)中,從一個Activity跳轉(zhuǎn)到另一個Activity后,對于前一個Activity中的很多資源系統(tǒng)不會及時地回收,前一個Activity只是被置于一種保持的狀態(tài)。用戶退出一個軟件后,Android系統(tǒng)不會把此軟件使用的所有內(nèi)存進行回收,這樣會造成系統(tǒng)資源的浪費。

對于這種情況,駕校通中使用了一個ActivityManager類來統(tǒng)一地管理所有的Activity,當有Activity打開的時候,ActivityManager會把此Activity添加到一個管理的隊列中進行管理,當再次打開同一個Activity的時候,ActivityManager會把上一個相同的Activity進行資源銷毀,在退出軟件的時候,ActivityManager會把管理隊列中所有的Activity逐一進行資源銷毀回收。系統(tǒng)可以通過ActivityManager中管理隊列中的Activity實例來進行某Activity資源的調(diào)用。這樣可以提高軟件的運行速度,同時也可以在軟件退出時提高系統(tǒng)資源回收的能力。

關(guān)鍵代碼如下:

public static void addActivity(Activity ac){

if(allActivitys.containsKey(ac.getLocalClassName())){

allActivitys.get(ac.getLocalClassName()).finish();

allActivitys.remove(ac.getLocalClassName());

}

allActivitys.put(ac.getLocalClassName(), ac);

}

public static void removeActivity(String key){

if(allActivitys.containsKey(key))

allActivitys.remove(key);

}

//循環(huán)遍歷所有的Activity實例進行資源銷毀

Iterator it=allActivitys.entrySet().iterator();

while (it.hasNext()) {

if(it==1){

continue;

}

Map.Entry entry=(Entry) it.next();

//通過調(diào)用Activity的finish()方法來釋放所有的Activity

Activity ac=(Activity)entry.getValue();

ac.finish();}

3 結(jié)束語

綜上所述,駕校通軟件在開發(fā)過程中,針對手持設(shè)備存儲容量有限、計算能力有限的特點,從四個方面進行了優(yōu)化處理:一是本地化試題庫數(shù)據(jù),即試題庫數(shù)據(jù)是內(nèi)置于安裝程序,安裝后即可使用,通過SQLite進行本地數(shù)據(jù)讀取可以提高軟件的運行效率。二是對于其它大量相關(guān)資料采取存儲在服務(wù)器上,開發(fā)者可以定時更新服務(wù)器上的數(shù)據(jù),供用戶通過網(wǎng)絡(luò)隨時下載到本地瀏覽。三是調(diào)用了百度的轉(zhuǎn)碼技術(shù)實現(xiàn)Web網(wǎng)頁到WAP網(wǎng)頁的轉(zhuǎn)換;四是使用ActivityManager類來統(tǒng)一管理所有的Activity,節(jié)省系統(tǒng)開銷。

參考文獻:

[1]百度公司.http://developer.baidu.com/.2012年.

[2]明日科技.Android從入門到精通[M].清華大學(xué)出版社,2012.

50-100.

[3](美)艾倫,(美)歐文斯著,楊謙,劉義宣,謝志強譯.SQLite權(quán)威指南(第二版)[M].北京:電子工業(yè)出版社.2012.24-200.

[4](美)達西,(美)康德爾 著,北京麥稈創(chuàng)智信息技術(shù)有限公司 譯. Android移動應(yīng)用開發(fā)(第3版)卷Ⅱ:提高篇[M].人民郵電出版社,2013.20~200.

[5]李興華.名師講壇——Android開發(fā)實戰(zhàn)經(jīng)典[M].清華大學(xué)出版社,2012.30-200.

主站蜘蛛池模板: 精品久久久久久久久久久| 亚卅精品无码久久毛片乌克兰| 国产清纯在线一区二区WWW| 亚洲成人网在线观看| 在线欧美国产| 欧美亚洲综合免费精品高清在线观看| 亚洲高清中文字幕在线看不卡| hezyo加勒比一区二区三区| 免费人成网站在线高清| 亚洲综合专区| 综合色区亚洲熟妇在线| 国产迷奸在线看| 国产人人乐人人爱| 71pao成人国产永久免费视频| 天天躁夜夜躁狠狠躁图片| 欧美人与牲动交a欧美精品| 亚洲欧美人成电影在线观看| 精品夜恋影院亚洲欧洲| 国产精品综合久久久| 2021国产精品自产拍在线观看| 色网在线视频| 九色在线观看视频| 一级毛片网| 国产福利拍拍拍| 国产主播在线观看| 国产精品部在线观看| 成色7777精品在线| 欧洲一区二区三区无码| 亚洲色中色| 伊人久久精品无码麻豆精品 | 亚洲成人在线网| 在线播放国产一区| 本亚洲精品网站| 亚洲无码高清一区| 亚洲无码37.| 成人韩免费网站| 国产一区二区三区在线精品专区| 亚洲国产综合精品一区| 无码AV动漫| 欧美高清国产| 日本国产精品| 亚洲动漫h| 国产国拍精品视频免费看| 香蕉久久国产精品免| 欧美成一级| 亚洲中久无码永久在线观看软件| 日本免费一区视频| 日韩国产亚洲一区二区在线观看| 午夜a视频| 在线视频97| 免费精品一区二区h| 亚洲国产精品一区二区第一页免 | 久久黄色免费电影| 四虎AV麻豆| 国产主播一区二区三区| 麻豆a级片| 国产精品黑色丝袜的老师| 亚洲无码高清免费视频亚洲| 97国产一区二区精品久久呦| 在线精品欧美日韩| 午夜日本永久乱码免费播放片| 一级做a爰片久久毛片毛片| 99re热精品视频中文字幕不卡| 五月天综合婷婷| 在线观看亚洲天堂| 亚洲国产精品日韩专区AV| 欧美yw精品日本国产精品| 国产主播在线观看| 欧美一级大片在线观看| 午夜视频免费一区二区在线看| 丰满的熟女一区二区三区l| av一区二区三区在线观看 | 538国产视频| 波多野结衣久久高清免费| 免费一级无码在线网站| 国产视频久久久久| 色有码无码视频| 喷潮白浆直流在线播放| 久久国产精品电影| 日本人妻丰满熟妇区| 欧美中文字幕在线二区| 色国产视频|