关于做Android+JavaEE系统集成开发的一点心得

76 篇文章 6 订阅

前言: 很早以前,就听人说过android以后会火起来,作为一个前瞻性对它有所了解会是一个转型的好机会,javaweb太成熟饱和了,现在市面上各种android手机层出不穷,网上各种android视频连续剧一样跟进,安卓一下子成为了热门话题,刚开始也是出于个人兴趣学的很hi感觉挺容易上手的样子,后来工作中才发现问题很多也很棘手,慢慢的在纠结和痛苦中琢磨出了一些经验和规律!

 

1.android作为view层,要实现和服务层低耦合,必须使用webservice接口,目前还没有十分完善的插件,曾经试过axis的android包(ksoap2),用了之后感觉非常麻烦,特别是复杂数据类型的传递,而且bug也很多,还要改别人源码,无疑增加团队的学习成本和开发难度,无奈之下自己做了,android端使用Apache的httpclient发送交互请求,定义好xml接口传输数据,接收也是用dom4j解析,经测试在2.2中dom4j支持性很好,2.1少些解析用法不支持,但大部分能用,说到这大家也许懂了,没错后端用的是servlet机制,再利用java反射根据xml文件描述动态调用指定的spring服务和方法,这些已经足够,而且可以完全按自己的方式做更多灵活的扩展,不过后来发现配合Xstream更效率,详情可参考android 中XML和对象转换利器Xstream的使用

 

2.httpclient确实是个好东西,但作为无状态访问协议,http无法保存用户会话信息,于是翻开了axis的源码发现它原来时把用户的首次访问信息保存至特定文件,而后根据心跳机制,定时做校验,茅塞顿开,于是我把用户首次访问信息保存在数据库会话表中,并且写了一个存储过程,定时把会话中登录时间距离当前时间超过30分钟的记录做删除操作,用户每次登录都与会话表进行匹配,没有记录即刻超时强退,这么一来,方便简单多了,那么用户每次访问系统都得在xml文件里带着系统给它的串号,也就是sessionid,才叫一次完整的会话,httpclient的用法可参考关于HttpClient的总结

 

3.android系统画图是个麻烦的活,初期我们小组找遍了所有画图的插件,都是忧喜过半,没有办法找到特别满意的,要么是使用太麻烦,要么是找不到我们要的效果,研究的很累也没头绪,问了一些原先做过j2me老程序员,他们建议如果不是专业做游戏的话,统计图表这些还是借助服务端来做更合适一点,于是我们抛弃了所有的android端画图插件,采用jfreechart在服务端画好,图片http流到手机端显示,当然因为2.1系统不支持flash,也就没考虑在做得更漂亮,图表很直观很清晰.另外也可以使用higcharts,详情可参考:Highcharts纯Javascript图表使用讲解(附Demo全源码案例)

 

4.UI是个难点,而且为了适应不同分辨率,之前用px单位很有问题,后来改了dip定位,好了许多,之后大面积使用选项卡样式,统一风格,难点很多,比如给tabhost加样式动态改变效果,按钮透明,listview去横线加箭标加动态发亮加下拉翻页,还有手势滑动,各种各样的widget特效和动画切屏,为了省去弯路,我们反编译了QQ,飞信,58,赶集,飞机票,墨迹天气等所有主流的android布局和美化的用法,吸取不少有用的经验,但是依然感觉布局很难做,美工无法直接介入而且模拟器测试很不给力,没办法只能用真机测ui,不过还是感觉很麻烦每次都得运行起来看,看着编译上传运行的进度条,像我这种急性子真快疯掉,没办法彻底换用乌班图linux64位系统作为开发环境,速度能快不少的.

 

5.android的客户端更新功能,相信只有做过的才知道其中的辛酸,一要做好断点续传,二要做好数据库的初始化工作,三要做好签名,四要做好版本校验的算法并且能显示动态进度条和百分比,断点续传好做,但是数据库初始化麻烦点,我们的做法是把sqlite库文件直接从raw下拷贝至sd卡中,并设置了sqlite的读取库路径指向它,感觉这样好一点,签名一开始不知道,每次覆盖都提示安装未完成,后来才明白为了保证应用的唯一性,它就像是身份证一样,其他没什么作用,和塞班的签名不是一回事,封装apk必须保证在同一签名文件下才可相互覆盖安装!

 

6.webview中可以调用后端的java代码,类似dwr功能,不过这个功能一直用的很少,很不稳定,兼容性要考量,android既然提供了那么多的ui控件,就说明webview是无法替代它的,毕竟还需要调用底层服务,webview还是慎用的好,有幸参见过一次移动开发者大会,发现有个公司大力推荐他们的一键发布系统,号称一次开发就可以在wp7、android、ios和web上运行,着实激动一把进去抓住那个讲师就劈头盖脸的问,原来真有人干这种事情,采用html+css做高仿的android界面,彻底替换高成本的android原生系统开发,美其名“html5”app发布,把android app的开发成本一下子拉低到一个山寨的档次(尽管再无力这种结果在天朝也是必然的),让我们这些辛辛苦苦扣吃android原生代码的人情何以堪,不过还是要多说一句webview套html终归是兔子尾巴长不了,想做精品应用,必须用原生开发。

 

 

7.android也应该遵循mvc的编程规范,activity只负责处理跳转,UI,和简单数据校验工作,业务逻辑放置在service类中,sqlite操作稍加封装下,做个类似jdbcUtil的那种模板类,提供增删改查,分页等方法,这样dao操作就完善许多,我想作为java程序员转做android开发,最大的障碍不在框架也不在谷歌sdk中的那些api,而是java基础,通过写程序发现,做手机开发的程序员,基本素质要过硬,尤其在集合,线程,异常,io,http这些要非常透彻,不然一个看似很简单的功能,可能就会写的bug百出,甚至效率很低,可读性差,基本上自己回过头都看不懂自己写的是什么,对接口和抽象类,包括匿名内部类的写法也要炉火纯青,熟悉类包的基本结构,及时对自己完成的功能做代码上的优化和重构,让自己和别人读起来像读诗歌一样,清晰优美,它不像web框架那么成熟,大家都用ssh,都很有规范可循,照着画一般也看不出个人功底来!要做好android开发,java基础必须强,否则只能停留在做一些简单的应用层开发,做IM聊天,断点上传下载,邮件协议,高级UI效果就犯难了!

 

8.另外地图导航也是一个亮点,现在不管做什么功能都会用到地图导航,吃喝玩乐,用户都想知道在什么地方,目前百度谷歌都推出了android的地图接口,我们用的是arcgis,好在api不多应用也很简单,官方都有现成例子,让我这个arcgis是两把刷子的人都能糊上交差,其他类似百度,高德都有自己的地图api接口,里面定位搜索什么都能做,确实很方便,谷歌自带的定位写起来实在太麻烦,申请key还老半天被天朝和谐,所以很难用。

 

9.写android代码最大的纠结是测试找bug,模拟器很慢,不管修改什么地方,都要重编译部署,ADT插件经常发生debug失效的情况,想加速开发,首先要将eclipse自动编译关掉,把模拟器中没用的进程杀掉,再把一些没用的手机特效关掉,模块化开发,这样便于将整个方法体切出来放进junit里测试,有一款叫Youwave_Android模拟器,使用速度非常快,如果实在没有真机的情况下可以用它来过渡下,没事还可以多下载些android软件,学习下别人的系统是怎么做的,至少能提高下UI审美,有人提议在linux平台上开发,如果从未使用过最好先别给自己加难度,实在想试推荐使用ubuntu10中文桌面版,虽然速度上是没感觉到快多少,但是确是个逐步锻炼提升自己的好机会,技多不压身!

 

10. 有些小技巧是挺实用的,一些adb命令肯定要比用adt插件要快,新版的sdk升级包把它放在了platform-tools目录下;模拟器横竖切屏有快捷键ctrl+F11或者小键盘home;如果你debug失灵了尝试在DDMS里把进程杀掉部署重试,如果还不行就只有重启模拟器了;如果突然发现gen目录下怎么也不生成R.java文件了,那就show problems看看工程是不是有error,一般不是包路径有问题就是程序内部布局文件有错误,如果仍然无效,关闭eclipse重新打开就好了,有时候adt就会出现这样的bug;adt插件和sdk升级包是有版本依赖的,如果使用的是8.0以上的adt插件,记住的sdk升级包一定用最新的,否则会报找不到adb命令的错误,不要茫然就升级插件,最新10的插件只能在3.5以上的eclipse上运行,而且它并没有带来多大惊喜,只是支持更高sdk版本罢了;android程序本身也有缺陷,千万不要钻太深和它较劲,走不过去的地方就想其他路绕,只要简约朴实不俗套,程序功能健壮就可以;另外多加几个像EOE,开源中国之类的android开发者论坛社区下源码发帖求助,技术无他,唯手熟尔!

 

关于论坛和社区里经常有人争论学javaee和android到底哪个好,其实都一样,不都是java语言吗?做android的后端多半也是javaee服务,做javaee的人难免也要会一点android,相互配合调试,如果两者都会就业机会和前景岂不是一片大好,运气好干几年你就升职加薪,当上项目经理,迎娶白富美,甚至成为统领公司技术和业务的CTO了,听起来是不是有点小激动呢?java还是很有前途的


真心希望下次谷歌百度的时候看到的不是一大堆copy粘贴来的hello world例子,而是实实在在的开发者之间共享和传递的经验!




附: 

Android精品开源项目整理(持续更新中..)

Java自学视频整理(持续更新中...)


 




  转载请标明出处 http://blog.csdn.net/shimiso 

技术交流群:361579846

 

  • 15
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 47
    评论
随着各行业日益发展,行业中的业务,管理模式也不但在变化,随之行业中的信息化软件也要随之而变化,增加、删除或修改某些功能,这就意味要花大量的间和精力去编写或修改源代码来更新升级软件,软件更新升级完后还需要给每个客户机去重新安装,不能达到实更新升级的目的。然而这种模式已经不太适合现在的软件开发模式,随着软件行业的发展,软件配置化模式理所应当替代了陈旧的开发模式,从而节约了大量的间和精力去修改源代码,大大的提高了工作效率。 系统集成应用及快速开发平台(SIDS系统简称)是具有一个高效灵活,集成应用,开发于一体的系统平台,打破了传统的软件开发模式,实现了完全配置化,使原本需要大量的间和精力去开发或者修改的软件,应用系统集成应用及快速开发平台只需要配置SQL语句或者参数配置就能完成业务,软件上的逻辑操作,花少量的间和精力就能完成开发和修改的工作,大大的提高了工作效率,降低了大量的成本。 一. 系统集成应用及快速开发平台特点介绍 1. 用户能在平台SIDS中任意建立菜单(一级菜单、二级菜单等)。 2.根据业务的发展用户可以在平台中开发任何功能模块或者修改某些功能模块。 3. 引用和平台SIDS相关的DLL(用户图形界面)文件,以达到软件升级的目的。 4. 在局域网内任何一台客户端都可以作为应用程序服务器, 其他的客户端可以下载服务器端列表中的文件, 实现无障碍在线升级。 5.包含一个强大的报表系统,根据用户定制的要求可以开发任何查询报表。 6.包含一个强大的报表模板设计工具,根据用户定制的要求设计任何样式的报表模板。 7.定自动执行按键功能。 8.可以调用其他应用程序。 9.支持进入系统后自动弹出一个或多个界面。 10.支持实升级。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 47
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值