`
亚当爱上java
  • 浏览: 710404 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于做Android+J2ee系统集成开发的一点心得【转】

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

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

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

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

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

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

  6. webview中可以调用后端的java代码,类似dwr功能,不过这个功能一直用的很少,很不稳定,兼容性要考量,android既然提供了那么多的ui控件,就说明webview是无法替代它的,毕竟还需要调用底层服务,webview还是慎用的好。

  7. android也应该遵循mvc的编程规范,activity只负责处理跳转,UI,和简单数据校验工作,业务逻辑放置在service类中,sqlite操作稍加封装下,做个类似jdbcUtil的那种模板类,提供增删改查,分页等方法,这样dao操作就完善许多。我想作为java程序员转做android开发,最大的障碍不在框架也不在谷歌sdk中的那些api,而是java基础。通过写程序发现,做手机开发的程序员,基本素质要过硬,尤其在集合,线程,异常,io,http这些要非常透彻,不然一个看似很简单的功能,可能就会写的bug百出,甚至效率很低,可读性差,基本上自己回过头都看不懂自己写的是什么,对接口和抽象类,包括匿名内部类的写法也要炉火纯青。

  熟悉类包的基本结构,及时对自己完成的功能做代码上的优化和重构,让自己和别人读起来像读诗歌一样,清晰优美,它不像web框架那么成熟,大家都用ssh,都很有规范可循,照着画一般也看不出个人功底来!我想说的是想做android开发的程序员,要特别留意java基础!

  8. 另外地图导航也是一个亮点,现在不管做什么功能都会用到地图导航,吃喝玩乐,用户都想知道在什么地方,目前百度谷歌都推出了android的地图接口,我们用的是arcgis,好在api不多应用也很简单,官方都有现成例子,让我这个arcgis是两把刷子的人都能糊上交差。

  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程序本身也有缺陷,千万不要钻太深和它较劲,走不过去的地方就想其他路绕,只要简约朴实不俗套,程序功能健壮就可以;另外多加几个android开发者论坛社区下源码发帖求助,技术这东西,无他,唯手熟尔!

  最后这里附上真机配置安装说明,我用的是魅9,其他品牌手机也应该都有,好处不多说,自己看!

  安卓虽然目前很热,但听说linux社区管理员将谷歌android源码删除,并说它并非完全真开源,有欺骗利用开源社区的嫌疑,如果真的是这样,那么安卓将失去了很多开发者的信任和支持,总之不是很好的结果,真心希望下次谷歌百度的时候看到的不是一大堆copy粘贴来的hello world例子,而是实实在在的开发者之间共享和传递的经验,所以开源才是硬道理!

分享到:
评论

相关推荐

    Java学习之路:不走弯路,就是捷径!!

    - 熟悉至少一种集成开发环境(IDE),例如Eclipse、IntelliJ IDEA等。 - IDE能极大地提高开发效率,熟悉使用IDE的各种功能是必不可少的。 6. **项目管理与团队协作**: - 学会使用版本控制工具(如Git)进行代码...

    《学生选课系统》概要设计说明书.doc

    《学生选课系统》概要设计说明书.doc

    80万吨 年对二甲苯px项目 初步设计说明书.docx

    80万吨 年对二甲苯px项目 初步设计说明书.docx

    花朵授粉算法改进版NMFPA的技术实现与性能评估

    内容概要:本文介绍了改进版花朵授粉算法(NMFPA)的关键技术和性能提升。主要改进点包括:动态p值调整、惯性权值引入、精英信息共享以及双重扰动策略。通过23个基准测试函数验证,NMFPA在收敛速度、跳出局部最优等方面表现出色。文章详细解析了各个改进模块的工作原理,并提供了完整的Python代码实现,涵盖初始化、授粉过程、扰动策略等核心部分。此外,作者还分享了调参经验和学习建议,强调了动态参数调整和种群多样性的关键作用。 适用人群:对群体智能算法感兴趣的科研人员、算法工程师及研究生。 使用场景及目标:适用于解决连续优化问题,特别是在高维、多峰函数优化场景中。目标是提供一种高效稳定的优化工具,帮助研究者快速掌握并应用改进型花朵授粉算法。 其他说明:文中附带大量代码片段和测试数据,便于读者理解和复现实验结果。建议初学者先熟悉基本的花朵授粉算法,再逐步深入理解各项改进措施。

    比亚迪f3变速器设计说明书.docx

    比亚迪f3变速器设计说明书.docx

    餐馆点菜系统概要设计说明书.doc

    餐馆点菜系统概要设计说明书.doc

    基于webmagic + springboot + mybatis的Java爬虫,使用Echarts进行数据可视化.zip

    基于webmagic + springboot + mybatis的Java爬虫,使用Echarts进行数据可视化.zip

    预算管理在企业管理中作用.docx

    预算管理在企业管理中作用.docx

    【人工智能导论】支持向量机算法分析预习报告:深入理解SVM原理与鸢尾花数据集分类实验设计

    内容概要:本文档为2024~2025学年第二学期的人工智能导论课程中的支持向量机(SVM)算法分析实验预习报告。报告的主要目的是深入理解SVM的基本原理、核函数的作用以及参数调节对模型的影响,同时掌握特征选取的方法和重要性,为后续处理更复杂的数据集积累经验。实验任务包括对鸢尾花数据集进行特征探索,通过绘制相关性矩阵、径向可视化或各特征之间的关系矩阵图,深入了解数据集特征,并利用SVM算法实现对该数据集的准确分类。实验设备和环境要求操作系统为Windows、Linux或macOS均可,编程语言为Python,并搭配NumPy、Pandas、Scikit-learn和Matplotlib等科学计算和数据处理库。; 适合人群:具有一定的数学基础和编程经验,正在学习或从事机器学习和数据挖掘领域工作的学生或研究人员。; 使用场景及目标:①适用于需要理解SVM算法原理及其应用的学习者;②帮助研究者掌握如何使用SVM进行分类任务,特别是针对线性不可分的数据集;③为后续更复杂的机器学习项目提供理论和技术支持。; 其他说明:实验将在图书馆附楼计算中心进行,时间为2025年4月15日,由教师王艳指导并批阅。实验预习过程应详细记录设计思想、设计步骤等初步方案,可以通过程序流程图、伪代码、预定相关测试数据和预期结果等方式来表示。

    裂缝检测数据集,支持yolo v7格式的标注,1673张原始训练集图片,正确识别率99.4%

    裂缝检测数据集,支持yolo v7格式的标注,1673张原始训练集图片,正确识别率99.4% 图片详情可查看博文:https://backend.blog.csdn.net/article/details/147232357

    HPPO法生产环氧丙烷的工艺初步设计说明书项目可行性报告中文摘要.pdf

    HPPO法生产环氧丙烷的工艺初步设计说明书项目可行性报告中文摘要.pdf

    (最新修订版)基于PLC的电线电缆张力测控设计毕业论文设计说明书.doc

    (最新修订版)基于PLC的电线电缆张力测控设计毕业论文设计说明书.doc

    jzs125 360°齿轮齿条摆动液压缸毕业设计说明书.docx

    jzs125 360°齿轮齿条摆动液压缸毕业设计说明书.docx

    三菱PLC与触摸屏在花式喷水池控制系统的应用详解

    内容概要:本文详细介绍了使用三菱FX5U系列PLC和GT2715触摸屏构建花式喷水池控制系统的方法。首先阐述了硬件搭建,包括IO设备的选择与连接方式,如电磁阀、变频器、传感器等,并强调了电气隔离和防护措施的重要性。接着深入解析了梯形图编程逻辑,展示了如何通过不同的模式切换来实现多样化的喷水效果,以及如何利用比较指令、移位指令等实现精确控制。同时探讨了触摸屏组态的设计思路,如模式选择、水压监测、急停保护等功能的实现方法,并提供了VB脚本示例用于增强人机交互体验。此外,还讨论了安全联锁机制、抗干扰措施、通信扩展等方面的内容,分享了许多基于实践经验的技术细节和注意事项。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程及触摸屏应用感兴趣的读者。 使用场景及目标:帮助读者掌握三菱PLC与触摸屏联合使用的技能,能够独立完成类似项目的规划、实施与维护工作,提高对复杂工控系统的理解和应对能力。 其他说明:文中涉及大量实际案例和技术诀窍,对于初学者来说具有一定挑战性,建议结合官方手册进行学习。

    带搅拌装置的夹套传热式反应釜的机械设计说明书.doc

    带搅拌装置的夹套传热式反应釜的机械设计说明书.doc

    树莓派PICO keil包

    树莓派PICO keil包

    发动机机油泵总成性能试验台设计 毕业设计说明书.docx

    发动机机油泵总成性能试验台设计 毕业设计说明书.docx

    滚筒输送机设计说明书.pdf

    滚筒输送机设计说明书.pdf

    《工程设计训练》课程设计说明书 日产7500吨熟料预分解窑的分解炉设计.doc.doc

    《工程设计训练》课程设计说明书 日产7500吨熟料预分解窑的分解炉设计.doc.doc

    基于MATLAB的楼宇负荷需求响应研究:模型预测控制与完全复现

    内容概要:本文详细介绍了如何使用MATLAB和CVX工具箱,通过模型预测控制(MPC)优化楼宇空调系统的能耗管理。首先,作者通过对建筑热力学特性的建模,建立了状态空间模型来描述楼宇的温度变化规律。接着,设计了一个24小时预测时域的MPC控制器,结合动态电价信号,实现了在电价低谷期预冷建筑并在电价高峰期减少制冷功率的目标。文中展示了具体的MATLAB代码片段,解释了关键参数的选择及其物理意义,并讨论了如何通过引入舒适度约束和反馈校正机制提高控制精度。最终,仿真实验表明该方法不仅能够显著降低电费支出,还能保持室内温度在舒适的范围内。 适合人群:从事楼宇自动化、能源管理和控制系统设计的研究人员和技术人员。 使用场景及目标:适用于商业建筑和工业园区的空调系统节能改造项目,旨在通过智能化控制手段实现节能减排和成本优化。 其他说明:文章强调了模型简化与计算效率之间的权衡,以及在实际应用中需要根据不同建筑物的具体情况进行参数调整。同时指出,良好的用户体验是衡量控制算法成功与否的重要标准之一。

Global site tag (gtag.js) - Google Analytics