Android客戶端開發(fā)流程圖及案例_第1頁
Android客戶端開發(fā)流程圖及案例_第2頁
Android客戶端開發(fā)流程圖及案例_第3頁
Android客戶端開發(fā)流程圖及案例_第4頁
Android客戶端開發(fā)流程圖及案例_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Android 客戶端開發(fā)流程1 項(xiàng)目流程圖2 項(xiàng)目階段描述2.1 項(xiàng)目需求分析階段描述輸入:項(xiàng)目產(chǎn)品開發(fā)計(jì)劃書總體方案書輸出:項(xiàng)目產(chǎn)品需求規(guī)格說明書產(chǎn)品測試計(jì)劃及裁減說明書2.2 項(xiàng)目設(shè)計(jì)施階段輸入:項(xiàng)目產(chǎn)品需求規(guī)格說明書產(chǎn)品測試計(jì)劃及裁減說明書輸出:產(chǎn)品概要設(shè)計(jì)說明書系統(tǒng)測試方案集成測試方案2.3 項(xiàng)目實(shí)施階段輸入:項(xiàng)目產(chǎn)品需求規(guī)格說明書產(chǎn)品概要設(shè)計(jì)說明書待更新的系統(tǒng)測試方案待更新的集成測試方案輸出:產(chǎn)品詳細(xì)設(shè)計(jì)說明書更新的系統(tǒng)測試方案更新的集成測試方案2.4 項(xiàng)目測試階段輸入:項(xiàng)目產(chǎn)品需求規(guī)格說明書產(chǎn)品詳細(xì)設(shè)計(jì)說明書系統(tǒng)測試方案集成測試方案產(chǎn)品單元測試記錄輸出:系統(tǒng)測試缺陷記錄產(chǎn)品單元測

2、試報(bào)告集成測試報(bào)告系統(tǒng)測試報(bào)告2.5 項(xiàng)目驗(yàn)收階段輸入:項(xiàng)目產(chǎn)品需求規(guī)格說明書產(chǎn)品詳細(xì)設(shè)計(jì)說明書系統(tǒng)測試缺陷記錄產(chǎn)品單元測試報(bào)告集成測試報(bào)告系統(tǒng)測試報(bào)告輸出:項(xiàng)目總結(jié)報(bào)告項(xiàng)目中無法滿足功能項(xiàng)說明書維護(hù)方案本文介紹了如何使用Android搭建客戶端,實(shí)現(xiàn)手機(jī)和服務(wù)器的交互。讓我們了解如何采用SSH框架,把服務(wù)器端的信息用JSON的形式發(fā)送到手機(jī)端。AD:筆者以前是學(xué)的Java EE,由于項(xiàng)目需要要開發(fā)Android,所以臨時(shí)補(bǔ)了一個(gè)多星期,主要是手機(jī)端和服務(wù)器端交互,雙向開發(fā)的。首先在服務(wù)器端,我采用的是SSH框架,struts 2集合了JSON插件,服務(wù)器和客戶端的信息交互采用的JSON來傳輸

3、,由于在服務(wù)器端用了Struts 2,所以我就用裝了一個(gè)JSON插件。這樣,很輕易的就把服務(wù)器端的信息用JSON的形式發(fā)送到了手機(jī)端。以下是代碼:首先,在服務(wù)器端搭建好SSH框架,具體細(xì)節(jié)就不在陳述。struts.xml配置如下:1. <packagename="login"extends="json-default">  2. <actionname="login"class="com.jclick.test.LoginAction"method="login"&g

4、t;  3. <resulttype="json"><paramname="includeProperties">result</param></result>  4. </action>  5. </package>  6.  7.     <packagename="login"extends="json-default">  8

5、.     <actionname="login"class="com.jclick.test.LoginAction"method="login">  9.     <resulttype="json"><paramname="includeProperties">result</param></result>  10.  &

6、#160;  </action>  11.     </package> 手機(jī)端的代碼如下:首先,手機(jī)端有一個(gè)緩存類,主要用于緩存一些手機(jī)端需要訪問的數(shù)據(jù),這樣的好處是可以達(dá)達(dá)節(jié)省手機(jī)和服務(wù)器的交互,用單例實(shí)現(xiàn)的:1. packagecom.jclick.cache;  2.  3. importcom.jclick.bean.User;  4.  5. publicclassCache  6.  7. privateUserUse

7、r;  8.  9. privateCache()  10.  11.  12. /*構(gòu)造單例*/ 13. privatestaticclassCacheHolder  14. privatestaticfinalCacheINSTANCE=newCache();  15.  16. publicCachegetInstance()  17. returnCacheHolder.INSTANCE;  18.  19. publicUsergetUser()  20.

8、 returnUser;  21.  22. publicvoidsetUser(UserUser)  23. this.User=User;  24.  25.  26.  27.  28. packagecom.jclick.cache;  29.  30. importcom.jclick.bean.User;  31.  32. publicclassCache  33.       34.  &#

9、160;  privateUserUser;  35.       36.     privateCache()  37.           38.       39.     /*構(gòu)造單例*/ 40.     privatestatic

10、classCacheHolder  41.         privatestaticfinalCacheINSTANCE=newCache();  42.       43.     publicCachegetInstance()  44.         returnCacheHolder.INSTANCE; &

11、#160;45.       46.     publicUsergetUser()  47.         returnUser;  48.       49.     publicvoidsetUser(UserUser)  50.       

12、;  this.User=User;  51.       52.  53.  接著開始書寫手機(jī)端的協(xié)議,用戶向服務(wù)器發(fā)送請求,同時(shí)服務(wù)器反饋給手機(jī)端信息的:1. tocol;  2.  3. importjava.io.BufferedReader;  4. importjava.io.InputStreamReader;  5. importjava.util.ArrayList;  6. impor

13、tjava.util.List;  7.  8. importorg.apache.http.HttpResponse;  9. importorg.apache.http.NameValuePair;  10. importorg.apache.http.client.HttpClient;  11. importorg.apache.http.client.entity.UrlEncodedFormEntity;  12. importorg.apache.http.client.methods.HttpPost;  1

14、3. importorg.apache.http.impl.client.DefaultHttpClient;  14. importorg.apache.http.message.BasicNameValuePair;  15. importorg.json.JSONException;  16. importorg.json.JSONObject;  17.  18. publicclassBaseProtocol  19. privateStringBuildersb=newStringBuilder();  20.

15、 21. privateHttpClienthttpClient;  22. privateHttpPosthttpRequest;  23. privateHttpResponseresponse;  24.  25. privateList<NameValuePair>nameValuePair=newArrayList<NameValuePair>();  26.  27. BaseProtocol()  28. httpClient=newDefaultHttpClient(); &

16、#160;29.  30.  31. /*  32. *向服務(wù)器端發(fā)送請求  33. *  34. *paramurl  35. *throwsException  36. */ 37. protectedvoidpack(Stringurl)throwsException  38. httpClient=newDefaultHttpClient();  39. httpRequest=newHttpPost(url);  40.  41. httpRequest.setEn

17、tity(newUrlEncodedFormEntity(nameValuePair);  42. response=httpClient.execute(httpRequest);  43.  44.  45. /*  46. *得到返回?cái)?shù)據(jù)  47. *  48. *paramurl  49. *return  50. *throwsException  51. */ 52. protectedvoidparse()throwsException  53. /TODO狀態(tài)

18、處理500200  54. if(response.getStatusLine().getStatusCode()=200)  55.  56. BufferedReaderbufferedReader2=newBufferedReader(  57. newInputStreamReader(response.getEntity().getContent();  58. for(Strings=bufferedReader2.readLine();s!=null;s=bufferedReader2  59. .readLine()

19、 60. sb.append(s);  61.  62.  63.  64.  65. /*  66. *向服務(wù)器發(fā)送信息  67. *  68. *paramkey  69. *paramvalue  70. */ 71. publicvoidaddNameValuePair(Stringkey,Stringvalue)  72. nameValuePair.add(newBasicNameValuePair(key,value);  73.  

20、;74.  75. /*  76. *返回JSONObject對象數(shù)據(jù)模型  77. *  78. *return  79. *throwsJSONException  80. */ 81. publicJSONObjectgetJSON()throwsJSONException  82. returnnewJSONObject(sb.toString();  83.  84.  85.  86.  87. tocol; &

21、#160;88.  89. dReader;  90. importjava.io.InputStreamReader;  91. importjava.util.ArrayList;  92. importjava.util.List;  93.  94. importorg.apache.http.HttpResponse;  95. importorg.apache.http.NameValuePair;  96. importorg.apache.http.client.HttpClient;  

22、97. importorg.apache.http.client.entity.UrlEncodedFormEntity;  98. importorg.apache.http.client.methods.HttpPost;  99. importorg.apache.http.impl.client.DefaultHttpClient;  100. importorg.apache.http.message.BasicNameValuePair;  101. importorg.json.JSONException;  102. impor

23、torg.json.JSONObject;  103.  104. publicclassBaseProtocol  105.     privateStringBuildersb=newStringBuilder();  106.  107.     privateHttpClienthttpClient;  108.     privateHttpPosthttpRequest;  109.  

24、;   privateHttpResponseresponse;  110.  111.     privateList<NameValuePair>nameValuePair=newArrayList<NameValuePair>();  112.  113.     BaseProtocol()  114.         htt

25、pClient=newDefaultHttpClient();  115.       116.  117.     /*  118.     *向服務(wù)器端發(fā)送請求  119.     *  120.     *paramurl  121.     *throwsException 

26、60;122.     */ 123.     protectedvoidpack(Stringurl)throwsException  124.         httpClient=newDefaultHttpClient();  125.         httpRequest=newHttpPost(url); 

27、0;126.  127.         httpRequest.setEntity(newUrlEncodedFormEntity(nameValuePair);  128.         response=httpClient.execute(httpRequest);  129.       130.  131.   &

28、#160; /*  132.     *得到返回?cái)?shù)據(jù)  133.     *  134.     *paramurl  135.     *return  136.     *throwsException  137.     */ 138.    

29、 protectedvoidparse()throwsException  139.         /TODO狀態(tài)處理500200  140.         if(response.getStatusLine().getStatusCode()=200)  141.  142.          

30、;   BufferedReaderbufferedReader2=newBufferedReader(  143.                     newInputStreamReader(response.getEntity().getContent();  144.      

31、0;      for(Strings=bufferedReader2.readLine();s!=null;s=bufferedReader2  145.                     .readLine()  146.        &

32、#160;        sb.append(s);  147.               148.           149.       150.  151.     /* 

33、0;152.     *向服務(wù)器發(fā)送信息  153.     *  154.     *paramkey  155.     *paramvalue  156.     */ 157.     publicvoidaddNameValuePair(Stringkey,Stringvalue)  15

34、8.         nameValuePair.add(newBasicNameValuePair(key,value);  159.       160.  161.     /*  162.     *返回JSONObject對象數(shù)據(jù)模型  163.     *  164.  

35、60;  *return  165.     *throwsJSONException  166.     */ 167.     publicJSONObjectgetJSON()throwsJSONException  168.         returnnewJSONObject(sb.toString();  169.

36、       170.  171.  接著是登陸協(xié)議,在這里我只是模擬登陸使用的一個(gè)類,僅供大家參考:1. tocol;  2.  3. importorg.json.JSONObject;  4.  5. importcom.jclick.bean.User;  6.  7. publicclassLoginProtocolextendsBaseProtocol  8.  9. privatefinal

37、staticStringURL="http:/localhost:8080/test/login"  10.  11. publicbooleancheckLogin(Userusr)  12. try  13. pack(URL);  14. parse();  15. JSONObjectobj=this.getJSON();  16. if(obj.getString("result").equals("failed")  17. returnfal

38、se;  18. else  19. returntrue;  20.  21. catch(Exceptione)  22. e.printStackTrace();  23. returnfalse;  24.  25.  26.  27.  28.  29. tocol;  30.  31. importorg.json.JSONObject;  32.  33. importcom.jc

39、lick.bean.User;  34.  35. publicclassLoginProtocolextendsBaseProtocol  36.       37.     privatefinalstaticStringURL="http:/localhost:8080/test/login"  38.       39.     publicbool

40、eancheckLogin(Userusr)  40.         try  41.             pack(URL);  42.             parse();  43.    

41、60;        JSONObjectobj=this.getJSON();  44.             if(obj.getString("result").equals("failed")  45.           

42、60;     returnfalse;  46.             else  47.                 returntrue;  48.       

43、60;       49.         catch(Exceptione)  50.             e.printStackTrace();  51.             retur

44、nfalse;  52.           53.       54.  55.  然后是User實(shí)體類,主要用于保存用戶信息: 1. packagecom.jclick.bean;  2.  3. publicclassUser  4. privateStringusername;  5. privateStringpassword;  6. publicStri

45、nggetUsername()  7. returnusername;  8.  9. publicvoidsetUsername(Stringusername)  10. this.username=username;  11.  12. publicStringgetPassword()  13. returnpassword;  14.  15. publicvoidsetPassword(Stringpassword)  16. this.password=password;  

46、;17.  18.  19.  20.  21. packagecom.jclick.bean;  22.  23. publicclassUser  24.     privateStringusername;  25.     privateStringpassword;  26.     publicStringgetUsername()  27.   

47、;      returnusername;  28.       29.     publicvoidsetUsername(Stringusername)  30.         this.username=username;  31.       32.   &

48、#160; publicStringgetPassword()  33.         returnpassword;  34.       35.     publicvoidsetPassword(Stringpassword)  36.         this.password=password;

49、 37.       38.  39.  最后就是LoginActivity里邊判斷登陸的代碼了,詳細(xì)代碼不再貼出來了,僅貼一個(gè)判斷登陸的代碼:1. privatevoidcheckedData()  2. username=(EditText)findViewById(R.id.username).getText().toString();  3. password=(EditText)findViewById(R.id.password).getText().toString(); 

50、0;4.  5. Useruser=newUser();  6. user.setUsername(username);  7. user.setPassword(password);  8. LoginProtocollogin=newLoginProtocol();  9. booleanresult=login.checkLogin(user);  10.  11. if(result)SpiderCache.getInstance().setUserSession(user);  12. Toast.mak

51、eText(getApplicationContext(),"登錄成功",1000).show();  13. Intentintent=newIntent();  14. intent.setClass(LoginActivity.this,WelcomeActivity.class);  15. startActivity(intent);  16. elseToast.makeText(LoginActivity.this,"密碼或用戶名不匹配,請重新輸入!",1000).show();  17.

52、 18.  19.  20.         privatevoidcheckedData()  21.             username=(EditText)findViewById(R.id.username).getText().toString();  22.       

53、      password=(EditText)findViewById(R.id.password).getText().toString();  23.               24.             Useruser=newUser();  25.         

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論