安卓模式文檔圖像拼接技術(shù)研究論文下載_第1頁
安卓模式文檔圖像拼接技術(shù)研究論文下載_第2頁
安卓模式文檔圖像拼接技術(shù)研究論文下載_第3頁
安卓模式文檔圖像拼接技術(shù)研究論文下載_第4頁
安卓模式文檔圖像拼接技術(shù)研究論文下載_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、女卓x開發(fā)模式作者:海倫作者 qq: 515430273版權(quán)聲明:轉(zhuǎn)載這篇文章需要著名作者,若對文檔進(jìn)行修改可以作為合作作者著名后再次發(fā) 布1、前言一個安卓程序該如何開發(fā)? 一個安卓團(tuán)隊(duì)該如何構(gòu)建? 一個安卓項(xiàng)目進(jìn)度該如何量 化?安卓開發(fā)是否會有相應(yīng)的模式?這個是可以去探索的。木文所敘述的開發(fā)模式適合比較小的開發(fā)團(tuán)隊(duì)以及剛開始學(xué)習(xí)安卓開發(fā)的人。很多剛開 始學(xué)習(xí)安卓開發(fā)的人會選擇安卓快速開發(fā)的框架,這其實(shí)是一個相當(dāng)正確的選擇,使用快速 開發(fā)框架,以及熟悉安卓快速開發(fā)框架的運(yùn)行原理能夠在短吋間內(nèi)對安卓開發(fā)有了解。 不過對于需要自己架構(gòu)起一套安卓開發(fā)方法的人來說,概念往往是比源碼重要的,同時自己 探

2、索的路上,在不知道方向的時候往往會走彎路,所以有一套相對明確的概念作為指導(dǎo),能 夠不至于迷茫。我也是這種初學(xué)者z,在經(jīng)歷過兒次安卓開發(fā)后,慢慢發(fā)現(xiàn),自己開發(fā)安卓程序的時 候己經(jīng)形成了一個相對固定的形式,這種形式可以說是業(yè)務(wù)無關(guān)的,所以斗膽將這個模式分 享出來。這是一個單進(jìn)程的安卓開發(fā)模式,適合于1到10人的簡單的開發(fā)團(tuán)隊(duì)并發(fā)工作。這個 框架主要的特點(diǎn)是責(zé)任明確和職責(zé)單純2、框架概括2框架概括圖2.2框架圖知識棧該框架其實(shí)參考了最流行的三層架構(gòu)模式,也對三層架構(gòu)模式進(jìn)行刪減,使其適合安卓 的開發(fā)模式。在閱讀的時候,讀者需要一定的一下知識(1)m-v-c :不是設(shè)計模式里面的mvc,而是web開發(fā)

3、屮的模型,控制器,視圖的概念。(2)安卓framework的使用以及framework的原理(3)設(shè)計模式一般概念以及相應(yīng)的知識(4)入門的java知識其小個人將安卓需要做功能分為四點(diǎn)(1)數(shù)據(jù)獲?。?)數(shù)據(jù)展示(3)異步服務(wù)(4)業(yè)務(wù)模型3、框架詳細(xì)描述3.1 x模式的核心數(shù)據(jù)以及業(yè)務(wù)模型很多初學(xué)安卓開發(fā)的人,可能會迷茫于安卓界面的美觀、framework迷人的原理、 界步的挑戰(zhàn)、安卓性能的優(yōu)化等等,畢竟我也是這樣子走過來的。但是慢慢的,安 卓開發(fā)的激情也回歸于冷靜,軟件開發(fā)是圍繞著需求而進(jìn)行的,最終的盂求是與業(yè) 務(wù)有關(guān)的業(yè)務(wù)。其實(shí)整個框架的中心是十分簡單的業(yè)務(wù)模型存儲,業(yè)務(wù)模型可以說是任何

4、一個類, 只要它有保存業(yè)務(wù)數(shù)據(jù)以及處理業(yè)務(wù)數(shù)據(jù)的責(zé)任。而業(yè)務(wù)模型的儲存類其實(shí)可以簡 單到一個hashmnp,只要能夠根據(jù)一個相應(yīng)的tag找到這個在內(nèi)存屮還活著的模 型類就可以了。這樣子能夠訃編寫模型類的人不需耍參與到安卓的系統(tǒng)流程中,不需耍也不建議將 數(shù)據(jù)存放在activity, ad叩ter, listener等類中,數(shù)據(jù)只需要能夠被知道該數(shù)據(jù)名稱 的tag的類訪問到即町。數(shù)據(jù)儲存的類其實(shí)也并不需要復(fù)雜的內(nèi)容,歸于簡單。下面是一個簡單的定義 public abstract class cachcdataho1dorabstractpublic final static int save_su

5、ccess = 0;public final static int save_success_by_replace = 1;public final static int save_faile_object_null = 2;abstract publicint savedata(stritag,object data);abstract public object getdata(string tag);abstract publicobject getdata(string tag, object dcfault);abstract public void cleancacheo;abst

6、ract public int remove(string tag);到開發(fā)后期需要進(jìn)行復(fù)雜的內(nèi)存管理機(jī)制的時候,在此擴(kuò)展便可以了。至于有人問業(yè)務(wù)模型在哪里,業(yè)務(wù)模型是概念上的知識,可以說框架本身并不存在 這類型的知識框架是與業(yè)務(wù)無關(guān)的。所以寫業(yè)務(wù)模型的人可以完全不知道框架在干 什么,專心提供業(yè)務(wù)模型的類就可以了。3.2網(wǎng)絡(luò)通訊(數(shù)據(jù)獲収)其實(shí)網(wǎng)絡(luò)通訊+文件緩存木質(zhì)上是數(shù)據(jù)獲取,如果冇人不服還可以加上數(shù)據(jù)庫數(shù) 據(jù)獲取,數(shù)據(jù)獲取部分在框架屮其實(shí)是一個獨(dú)立的部分。但是也有人會有疑問,數(shù) 據(jù)獲取可能發(fā)生在程序運(yùn)行的任一時間點(diǎn),是不能擺脫程序框架運(yùn)行部分開發(fā)的。 其實(shí)大部分時間,編寫數(shù)據(jù)獲取代碼,以及

7、調(diào)用獲取數(shù)據(jù)的代碼是同一個人,但是 實(shí)際上,這個也是可以并行的,獲取數(shù)據(jù)代碼的寫和獲取數(shù)據(jù)代碼的調(diào)用其實(shí)也是 可以拆分的。個人感覺真正的框架所需要的是單純,并不是說使用框架的人就一定 需耍金盤了解框架,其實(shí)很多吋候需要顧慮的越多,工作就越困難。所以需耍的是 回歸單純,編寫數(shù)據(jù)獲取的人僅僅是負(fù)責(zé)編寫數(shù)據(jù)代碼。卜-面是關(guān)于這樣子想法的簡單實(shí)現(xiàn):通過抽象將網(wǎng)絡(luò)任務(wù)分開,下面貼出相應(yīng)的代碼:一個任務(wù)的抽象其實(shí)是可以被描述為任務(wù)請求前,任務(wù)請求吋,任務(wù)請求后三個部 分。而網(wǎng)絡(luò)請求獲取的數(shù)據(jù)業(yè)務(wù)模型,最終都會存放在內(nèi)存的x模式的核心,其 實(shí)這也是為了保持框架單純。最核心的函數(shù)為 public void r

8、equesl(context context, handler mhandler, int messagewhat, siring datatag);這是編寫數(shù)據(jù)訪問代碼的人所知道的全部知識:* p(iram context 安卓上卜文* param in handler消息的最終接受擰* param messagewhat發(fā)送消息的標(biāo)題* param datatag接受消息肩需婆向zehe屮丐的內(nèi)容標(biāo)記*/網(wǎng)絡(luò)訪問任務(wù)就是發(fā)起網(wǎng)絡(luò)訪問,獲取數(shù)據(jù),將數(shù)據(jù)升華為業(yè)務(wù)模型,然后扔進(jìn)內(nèi) 存中,然后通過handler發(fā)送信息通知數(shù)據(jù)就緒即可。編寫不需要知道這個類是什 么時候被調(diào)用,獲取的數(shù)據(jù)將會怎么被

9、使用。下面為相應(yīng)的代碼(1) 一個簡單的任務(wù)管理器/*肋ame ne t taskmanager* description提供異步網(wǎng)絡(luò)請求的類* author max* date 2015-9-1*/public class nettaskmanager/contextprivate context context = null;private handler mhandler = null;/hand 1 er需要回復(fù)的message的識別碼private int messagewhat 二 0:/獲取數(shù)據(jù)后寫入數(shù)據(jù)緩存的cache標(biāo)識private string datatag =&quo

10、t;”;/請求用的taskprivate netrequesttask task;/請求用線程private thread thread;public netrequesttask gettasko return task;public void scttask(netrequesttask task) this task 二 task;public static final int start_request_success = 0;public static final int request_offline = 1;public nettaskmanagcr(conlext contex

11、t , handler nihandlcr, int messagewhat, string datatag) this context 二 context ;this .mhandler = mhandler;thisdatatag = datatag;thismessagewhat = messagewhat;public void cannel()if (thread. isaliveo) try thread join(); catch (inicrruplodexceplion e) e. printstacktraceo ;/拋出線程進(jìn)行網(wǎng)絡(luò)請求public int donetre

12、quest()connectivi tymanagor connmgr = (connectivitymanager)context. getsystemservice(context. connectivityservic& ;nctworklnfo nctworklnfo 二 connmgrgctaclivcnctworklnfoo;if (networklnfo 二二 null | !networklnfo iscormectedo)(toast. maketcxt(context,"您的網(wǎng)絡(luò)有問題! ",toast. length_short) show()

13、; return request_offline;thread 二 new thread()(©overridepublic void run()super. run();task.beforerequest(context);task request(context , mhandler, messagewhat, datatag);task afterrequest(context);log f("nettaskmanager", "thread run complete");thread start();return start_requ

14、est_success(2)任務(wù)請求的模型/*name netrequesttask* description提供網(wǎng)絡(luò)請求的擴(kuò)展類* author max* date 2015-9-1*/public interface netrequesttask*數(shù)據(jù)請求前的弁備* param context 安卓上 卜文*/public void beforerequest(context context);/* param context安車上下文* param mhandler消息的最終接受者* param messagewhat發(fā)送消息的標(biāo)題* param datatag接受消,息后需耍向cach

15、e中寫的內(nèi)容*/public void request(context context, handler mhandler, int messagewhat, string datatag):*數(shù)據(jù)請求后的處理* param context 安卓上卜'文*/public void afterrequest(context context);3.3異步支持說到異步支持,安卓為了不影響主線程的性能,異步是必須的,異步其實(shí)是一個很難的 領(lǐng)域,不過對于有規(guī)律的任務(wù),可以采用一種名為心跳模式的異步模式進(jìn)行,下面為相應(yīng)的 代碼。類圖如下所示a主要是通過心跳發(fā)生器,產(chǎn)生心跳信號,每次產(chǎn)生心跳便調(diào)動心

16、臟(界步執(zhí)行的代碼) 進(jìn)行相應(yīng)的任務(wù),同時為了能夠透明地干擾獲取跳內(nèi)部的情況,要不心跳如同黑盒,就不是 那么好玩的。所以需要在心跳發(fā)生器中寫入監(jiān)聽。下面為相應(yīng)的代碼:(1)心跳接口/*心跳的實(shí)現(xiàn)* description為心跳任務(wù)的實(shí)現(xiàn)接11* date創(chuàng)建日期public interface bcatablc *當(dāng)心跳發(fā)住時執(zhí)行的任務(wù)*方法詳述(簡單方法可不必詳述)*/public void beat();/*是否繼續(xù)跳動的判斷條件*/public boolean isstillbeat();(2)心跳發(fā)牛器概念類/*name hcartbcatgcncraiorabstract* desc

17、ription* author max* date 2015-9t*/public abstract class heartbcatgcneralorabslraclpublic abstract void startbeat();public abstract void stopbeat();public abstract timer getimer();publicabstract boolean isstillbeat();(3) 心跳監(jiān)聽/*name fleartbeatl istener* description用丁對心跳書件的監(jiān)聽,實(shí)現(xiàn)反向控制* author max* date

18、2015-9-6*/public interface heartbeatlistenerpublic void onbeat (betitable heart, timer timer);(4) 一個簡單的心跳產(chǎn)牛器public class hoartbeatgencralor extends hcartbcatgcncratorabstract private timer timer = null;private boatable heart;private int prepare;private int delay;private heartbeatlistener listener =

19、null;public heartbeatlistenor getlistencroreturn listener;public void sctlistoner(hoartbeatlistonor lislenet)this1istener = listener;public hcartbeatgenerator(beatable heart,int prepare, int delay) this.heart 二 heart; this .prepare = prepare; this delay = delay;class beattaskextends tiinertaskfbeata

20、ble heart;timer timer;public beattask(beatable heart, timer timer)this .heart 二 heart;this .timer = timer;©overridepublic void rw() if(listener != null)listener. onbost(heart, timer); heart beat 0;if (!heart. isstilibeat () stopbeat ();)©overridepublic void startbeat() timer 二 new timer();timer schedule(new beattask(heart, timer), prepare, delay);(ove

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論