最近作了一個android的小項目,服務器端已經搭建好了,使用了spring MVC做爲後端技術,發佈了一系列web接口來接受客戶端提交的數據和返回客戶端請求的數據,web端使用了ext js來做爲前端技術。同時還須要一個android客戶端和ios客戶端,臨時先開發了一個android客戶端,由於服務器端接口已經寫好了,安卓端這邊只須要訪問這些接口就能夠獲取須要展現的數據和提交數據便可,開發難度不大。由於時間比較緊迫,因此沒有作詳細的設計,致使後來有不少其實比較冗餘的代碼,其實能夠經過良好的設計來減小代碼量,作好繼承就能夠了,這一點是一個教訓,之後在進行面向對象的開發時須要注意。另外也沒有作緩存機制的設計,也就是說應用所需的全部數據都是在用戶請求時去服務器端獲取的,本地不會保存數據,這樣作減小了邏輯的複雜度,有利於開發速度。可是之後須要緩衝機制的話改動可能比較大。前端
下面簡單描述一下這個應用的邏輯流程,首先用戶必需要進行登陸驗證才能夠進入應用,這樣作的目的是減小業務邏輯的複雜性。當用戶驗證成功進入應用後,會展示給用戶三個tab,分別是新聞通知tab,mytab,message tab,其中新聞通知是用來展現學校發佈的各類新聞和通知,my tab是用來提供用戶查詢各類信息的地方,message是用來查看和發送站內信給老師的地方。下面對這裏面用到的各個組件或者機制進行一下描述。java
Thread與Handler:當用戶進行登陸驗證或者其它須要鏈接網絡的操做時,都須要使用thread,在thread中使用httpclient來進行網絡鏈接,當獲取到服務器傳輸來的數據並進行處理後,網絡線程經過handler機制來與開啓網絡線程的線程進行數據同步的工做,handler通常是做爲主線程中的對象傳遞給thread的,所以在handler中能夠對主線程中的ui進行處理等工做。在java中,一切都是對象,thread也是,thread中有一個run函數是線程開始後所執行的函數,當在主線程中new出一個thread後,須要調用start這個函數後線程纔會執行。android
fragment:如今的應用,ui愈來愈複雜,原來單純的在activity中構建ui變得不太靈活,如今安卓中引入了fragment機制,一個activity中可使用多個fragment來構建ui界面,這樣在一個activity的生命週期中就能夠方便的構建複雜的ui界面而不須要切換activity。相似於activity中的oncreate方法,fragment中的oncreateview負責fragment初始化時的主要工做,此方法返回一個此fragment的view給activity,fragment也使用佈局文件來初始化界面,使用inflater的inflate方法來初始化界面。ios
listview:本應用中主要使用listview控件來展現數據信息,多個listitem來構造一個listview,listitem界面可使用佈局文件來定義,同時listview有一個addheader方法,能夠在listview頭部添加一個view來顯示在listview的頭部。同時,listview能夠實現onscrolllistener接口,來實現listview拖動的效果。web
adapter:適配器,相似於listview這樣的控件,須要適配器來填充數據,適配器通常會和一個list數據結構綁定,安卓系統會根據list的大小來構建listitem的數目和內容。spring
這裏描述的四個控件都是安卓應用中比較重要的四個控件,這裏只是簡單描述,具體的內容比這裏描述的更復雜,有時間的話再仔細描述一下這四個控件的具體用法。後端