Android客户端开发流程图及案例

阅读: 评论:0

2024年1月31日发(作者:)

Android客户端开发流程图及案例

Android 客户端开发流程

1 项目流程图

A项目开始项目需求分析阶段开发项目计划未通过项目审核通过AA项目设计阶段开发项目需求调研分析项目产品设计AAAndroid系统架构Android开发环境搭建准备Andrioid开发环境搭建安装JAVA SE

JDK配置JAVA环境变量安装Android

SDK+Eclipse在Eclipse中安装ADT,在Eclipse中配置DK设计实施阶段未通过模拟器AVDAVD创建和配置模拟器运行测试通过Android开发流程创建JAVA工程将动态链接库复制到JAVA工程,运行JAVA程序编写JAVA未通过AAAndroid程序调试未通过通过单元测试编译调试项目测试阶段通过集成、功能、系统测试新软件调优、新机型适配支持AA项目验收阶段产品验收无法满足功能项A结束

2 项目阶段描述

2.1 项目需求分析阶段描述

输入:

《项目产品开发计划书》

《总体方案书》

输出:

《项目产品需求规格说明书》

《产品测试计划及裁减说明书》

2.2 项目设计施阶段

输入:

《项目产品需求规格说明书》

《产品测试计划及裁减说明书》

输出:

《产品概要设计说明书》

《系统测试方案》

《集成测试方案》

2.3 项目实施阶段

输入:

《项目产品需求规格说明书》

《产品概要设计说明书》

待更新的《系统测试方案》

待更新的《集成测试方案》

输出:

《产品详细设计说明书》

更新的《系统测试方案》

更新的《集成测试方案》

2.4 项目测试阶段

输入:

《项目产品需求规格说明书》

《产品详细设计说明书》

《系统测试方案》

《集成测试方案》

《产品单元测试记录》

输出:

《系统测试缺陷记录》

《产品单元测试报告》

《集成测试报告》

《系统测试报告》

2.5 项目验收阶段

输入:

《项目产品需求规格说明书》

《产品详细设计说明书》

《系统测试缺陷记录》

《产品单元测试报告》

《集成测试报告》

《系统测试报告》

输出:

《项目总结报告》

《项目中无法满足功能项说明书》

《维护方案》

本文介绍了如何使用Android搭建客户端,实现手机和服务器的交互。让我们了解如何采用SSH框架,把服务器端的信息用JSON的形式发送到手机端。

AD:

笔者以前是学的Java EE,由于项目需要要开发Android,所以临时补了一个多星期,主要是手机端和服务器端交互,双向开发的。

首先在服务器端,我采用的是SSH框架,struts 2集合了JSON插件,服务器和客户端的信息交互采用的JSON来传输,由于在服务器端用了Struts 2,所以我就用装了一个JSON插件。这样,很轻易的就把服务器端的信息用JSON的形式发送到了手机端。以下是代码:

首先,在服务器端搭建好SSH框架,具体细节就不在陈述。配置如下:

1.

2.

3.

4.

5.

6.

7.

8.

9.

result

result

10.

11.

手机端的代码如下:

首先,手机端有一个缓存类,主要用于缓存一些手机端需要访问的数据,这样的好处是可以达达节省手机和服务器的交互,用单例实现的:

1.

2.

3.

4.

5.

6.

7.

8.

9.

;

;

publicclassCache{

privateUserUser;

privateCache(){

10.

11. }

12. /**构造单例*/

13. privatestaticclassCacheHolder{

14. privatestaticfinalCacheINSTANCE=newCache();

15. }

16. publicCachegetInstance(){

17. CE;

18. }

19. publicUsergetUser(){

20. returnUser;

21. }

22. publicvoidsetUser(UserUser){

23. =User;

24. }

25.

26. }

27.

28. ;

29.

30. ;

31.

32. publicclassCache{

33.

34. privateUserUser;

35.

36. privateCache(){

37.

38. }

39. /**构造单例*/

40. privatestaticclassCacheHolder{

41. privatestaticfinalCacheINSTANCE=newCache();

42. }

43. publicCachegetInstance(){

44. CE;

45. }

46. publicUsergetUser(){

47. returnUser;

48. }

49. publicvoidsetUser(UserUser){

50. =User;

51. }

52.

53. }

接着开始书写手机端的协议,用户向服务器发送请求,同时服务器反馈给手机端信息的:

1.

2.

3.

4.

5.

6.

7.

8.

9.

ol;

edReader;

treamReader;

ist;

;

sponse;

luePair;

10. ient;

11. odedFormEntity;

12. st;

13. tHttpClient;

14. ameValuePair;

15. ception;

16. ject;

17.

18. publicclassBaseProtocol{

19. privateStringBuildersb=newStringBuilder();

20.

21. privateHttpClienthttpClient;

22. privateHttpPosthttpRequest;

23. privateHttpResponseresponse;

24.

25. privateListnameValuePair=newArrayList();

26.

27. BaseProtocol(){

28. httpClient=newDefaultHttpClient();

29. }

30.

31. /**

32. *向服务器端发送请求

33. *

34. *@paramurl

35. *@throwsException

36. */

37. protectedvoidpack(Stringurl)throwsException{

38. httpClient=newDefaultHttpClient();

39. httpRequest=newHttpPost(url);

40.

41. ity(newUrlEncodedFormEntity(nameValuePair));

42. response=e(httpRequest);

43. }

44.

45. /**

46. *得到返回数据

47. *

48. *@paramurl

49. *@return

50. *@throwsException

51. */

52. protectedvoidparse()throwsException{

53. //TODO状态处理500200

54. if(tusLine().getStatusCode()==200){

55.

56. BufferedReaderbufferedReader2=newBufferedReader(

57. newInputStreamReader(ity().getContent()));

58. for(Strings=ne();s!=null;s=bufferedReader2

59. .readLine()){

60. (s);

61. }

62. }

63. }

64.

65. /**

66. *向服务器发送信息

67. *

68. *@paramkey

69. *@paramvalue

70. */

71. publicvoidaddNameValuePair(Stringkey,Stringvalue){

72. (newBasicNameValuePair(key,value));

73. }

74.

75. /**

76. *返回JSONObject对象数据模型

77. *

78. *@return

79. *@throwsJSONException

80. */

81. publicJSONObjectgetJSON()throwsJSONException{

82. returnnewJSONObject(ng());

83. }

84.

85. }

86.

87. ol;

88.

89. edReader;

90. treamReader;

91. ist;

92. ;

93.

94. sponse;

95. luePair;

96. ient;

97. odedFormEntity;

98. st;

99. tHttpClient;

100. ameValuePair;

101. ception;

102. ject;

103.

104. publicclassBaseProtocol{

105. privateStringBuildersb=newStringBuilder();

106.

107. privateHttpClienthttpClient;

108. privateHttpPosthttpRequest;

109. privateHttpResponseresponse;

110.

111. privateListnameValuePair=newArrayList();

112.

113. BaseProtocol(){

114. httpClient=newDefaultHttpClient();

115. }

116.

117. /**

118. *向服务器端发送请求

119. *

120. *@paramurl

121. *@throwsException

122. */

123. protectedvoidpack(Stringurl)throwsException{

124. httpClient=newDefaultHttpClient();

125. httpRequest=newHttpPost(url);

126.

127. ity(newUrlEncodedFormEntity(nameValuePair));

128. response=e(httpRequest);

129. }

130.

131. /**

132. *得到返回数据

133. *

134. *@paramurl

135. *@return

136. *@throwsException

137. */

138. protectedvoidparse()throwsException{

139. //TODO状态处理500200

140. if(tusLine().getStatusCode()==200){

141.

142. BufferedReaderbufferedReader2=newBufferedReader(

143. newInputStreamReader(ity().getContent()));

144. for(Strings=ne();s!=null;s=bufferedReader2

145. .readLine()){

146. (s);

147. }

148. }

149. }

150.

151. /**

152. *向服务器发送信息

153. *

154. *@paramkey

155. *@paramvalue

156. */

157. publicvoidaddNameValuePair(Stringkey,Stringvalue){

158. (newBasicNameValuePair(key,value));

159. }

160.

161. /**

162. *返回JSONObject对象数据模型

163. *

164. *@return

165. *@throwsJSONException

166. */

167. publicJSONObjectgetJSON()throwsJSONException{

168. returnnewJSONObject(ng());

169. }

170.

171. }

接着是登陆协议,在这里我只是模拟登陆使用的一个类,仅供大家参考:

1.

2.

3.

4.

5.

6.

7.

8.

9.

ol;

ject;

;

publicclassLoginProtocolextendsBaseProtocol{

privatefinalstaticStringURL="";

10.

11. publicbooleancheckLogin(Userusr){

12. try{

13. pack(URL);

14. parse();

15. JSONObjectobj=N();

16. if(ing("result").equals("failed")){

17. returnfalse;

18. }else{

19. returntrue;

20. }

21. }catch(Exceptione){

22. tackTrace();

23. returnfalse;

24. }

25. }

26.

27. }

28.

29. ol;

30.

31. ject;

32.

33. ;

34.

35. publicclassLoginProtocolextendsBaseProtocol{

36.

37. privatefinalstaticStringURL="";

38.

39. publicbooleancheckLogin(Userusr){

40. try{

41. pack(URL);

42. parse();

43. JSONObjectobj=N();

44. if(ing("result").equals("failed")){

45. returnfalse;

46. }else{

47. returntrue;

48. }

49. }catch(Exceptione){

50. tackTrace();

51. returnfalse;

52. }

53. }

54.

55. }

然后是User实体类,主要用于保存用户信息:

1.

2.

3.

4.

5.

6.

7.

8.

9.

;

publicclassUser{

privateStringusername;

privateStringpassword;

publicStringgetUsername(){

returnusername;

}

publicvoidsetUsername(Stringusername){

10. me=username;

11. }

12. publicStringgetPassword(){

13. returnpassword;

14. }

15. publicvoidsetPassword(Stringpassword){

16. rd=password;

17. }

18.

19. }

20.

21. ;

22.

23. publicclassUser{

24. privateStringusername;

25. privateStringpassword;

26. publicStringgetUsername(){

27. returnusername;

28. }

29. publicvoidsetUsername(Stringusername){

30. me=username;

31. }

32. publicStringgetPassword(){

33. returnpassword;

34. }

35. publicvoidsetPassword(Stringpassword){

36. rd=password;

37. }

38.

39. }

最后就是LoginActivity里边判断登陆的代码了,详细代码不再贴出来了,仅贴一个判断登陆的代码:

1.

2.

3.

4.

5.

6.

7.

8.

9.

privatevoidcheckedData(){

username=((EditText)findViewById(me)).getText().toString();

password=((EditText)findViewById(rd)).getText().toString();

Useruser=newUser();

rname(username);

sword(password);

LoginProtocollogin=newLoginProtocol();

booleanresult=ogin(user);

10.

11. if(result){tance().setUserSession(user);

12. xt(getApplicationContext(),"登录成功",1000).show();

13. Intentintent=newIntent();

14. ss(,);

15. startActivity(intent);

16. }else{xt(,"密码或用户名不匹配,请重新输入!",1000).show();

17. }

18. }

19.

20. privatevoidcheckedData(){

21. username=((EditText)findViewById(me)).getText().toString();

22. password=((EditText)findViewById(rd)).getText().toString();

23.

24. Useruser=newUser();

25. rname(username);

26. sword(password);

27. LoginProtocollogin=newLoginProtocol();

28. booleanresult=ogin(user);

29.

30. if(result){ tance().setUserSession(user);

31. xt(getApplicationContext(),"登录成功",1000).show();

32. Intentintent=newIntent();

33. ss(,);

34. startActivity(intent);

35. }else{ xt(,"密码或用户名不匹配,请重新输入!",1000).show();

36. }

37. }

以上代码为了跟大家分享一下,感觉手机端和服务器双向开发非常过瘾。同时对Android的兴趣大大提升,它也没有我们想象中的那么难。

Android客户端开发流程图及案例

本文发布于:2024-01-31 02:36:45,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170663980524729.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:项目   开发   手机
留言与评论(共有 0 条评论)
   
验证码:
排行榜

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23