当前位置: 首页 > 科技观察

大牛谈:Java程序员转Android开发必读经验分享

时间:2023-03-15 08:23:06 科技观察

DanielTan:Java程序员转Android开发必读经验分享好与不好的区别,只是两个职业岗位的选择。学Android搞移动互联网开发,学Java搞软件和网站开发。Android上的大部分应用程序都是用Java编写的,所以建议大家在Android学习初期认真学习Java。简单说说“转”前的准备工作:其实Java程序员自学Android开发的基础并不难。毕竟语言相似,功能相似。阅读Android源码的门槛比较低。可以认为“如果你是一名合格的程序员,自学能力和相关基础知识应该不是问题,学习Android也相对容易。所以Java程序员转行Android开发可以看作是一种“增量更新”。你只需要学习Android的基本组件:Activity、ContentProvider、Service、BroadcastReceiver;了解Intent、Handler、Adapter以及Android中的各种事件传递方法(onClick、onTouch等);同时,辅助一定量的代码,比如JNI,AIDL等,你可以看一下;你要放弃“UI元素像素位置”的概念,Android本身允许设置元素位置为制作UI,如果你这样做,结果就是大量机器放不下,那显示效果就有点惨了,所以不要试图通过获取屏幕尺寸来调整UI,像LinearLayout在swing或者swt上可有可无,东西一定要熟练在Android上。也很熟悉机智hide,提供Android、Java等编程知识的开发框架。当然,小编在这里说的只是杯水车薪,还有很多开发过程中需要注意的细节我们没有提到。下面小编就给大家分享一下前辈们将技术开发转为移动应用开发的经验。希望可以给大家作为参考:海豚浏览器CTO刘铁峰因为具体的开发场景不同,目标读者的体验也不同。.分享一些改造过程中需要补充的知识点和逻辑变化。移动开发和PC开发有什么区别?在我看来,从2002年开始,传统的桌面开发者基本都转向了J2EE/.NET/LAMP等基于Web技术或服务端开发技术的开发方式。使用C/C++/MFC/Delphi进行C/S模式开发的用户越来越少,甚至工作需求也越来越少。这样一来,在技术体系上,开发者的经验基本涵盖:1、HTML+CSS+JavaScript2、各种脚本语言(PHP/http://ASP.NET/JSP/Python/Ruby)操作服务器API3.服务器数据处理逻辑(O/RMapping,数据库连接池,各种设计模式如AOP,甚至DSL等)4.大型服务器架构设计(分布式架构,各种负载均衡,服务器连接优化)5.数据库(分布式数据库、事务处理、大规模数据存储、查询优化)6.大数据处理(Hadoop、Hive)等那么移动开发需要什么?不管Android/iOS/WP,其实开发的需求已经逐渐回到了2002年之前,大概比作MFC/Delphi的时代更合适。移动开发者的技能要求发生了变化,要求的经验变成了:充分了解各个移动平台的流程架构和程序生命周期逻辑(程序启动、程序被系统挂起/杀掉、Services)1.界面设计(各种UI控件、事件处理)2、数据处理逻辑(客户端缓存、多线程并发)3、网络数据处理4、平台相关特性(系统API调用、系统通知机制等)5、各种性能处理。因此,学习的途径和所需的经验是不同的。如果你需要从非移动开发者转型为移动开发者,即使你同样使用Java语言,你也需要了解不同的库,处理不同领域的具体问题。在移动设备的开发中,我把它们归结为三类问题:性能问题、界面响应问题和产品稳定性。这些是可能最需要关注和保护的技术人员。PeakLabs创始人季一超记得,iPhone刚出来的时候,人们看到了一个与传统“窗口”概念完全不同的逻辑:在界面上,一个应用程序占据了整个屏幕,在代码上,程序也处于严格的沙箱中。在里面跑。那时候我就意识到,这将是一套全新的规则。后来,我逐渐从表面看向更深的层次。写了几年烂代码,渐渐有了一些感悟:1.淡化文件的存在,突出应用和工作流。2、尽量避开主线程/UI线程,避免锁住界面。因为桌面应用锁定了UI,它只是一个窗口,而移动应用会给人一种“手机”整体挂起来的感觉……3.不要指望后台进行操作/可以快速完成的计算,您自己的程序可能随时被阻塞。杀死。后台只为VOIP、网络操作等保留。4、尽量加快启动速度。移动产品使用频率高,但单次使用时间远短于桌面,所以不要让用户像Photoshop一样傻等。即使使用“假象”,也要让用户觉得启动非常快。5、同一个功能最好有多种交互/操作方式。与称霸桌面世界的Windows不同,不同版本的Android和iOS的用户有不同的使用习惯。最好让人们的习惯起作用。6.UI控件最好不要太显眼(比如街机游戏中巨大的摇杆遮住角色),但也不要太晦涩(MammothBrowser4,哈哈哈)。.用户其实很在意功耗和发热,桌面用户从来不关心...8.当别人说很多功能无法实现或者平台不允许打开时,总有人用难以想象的方式以及实现的绝妙手段。。。个人愚见不可轻视哈~王思达,爱安卓,爱刷机,爱移动互联网。从桌面到移动,我们必须认识到两者的不同侧重点。包括网页端在内的桌面端更侧重于复杂的逻辑和高级任务,而移动端显然更具娱乐性。先从操作方法说起。桌面端主要依靠鼠标、键盘和触摸板,因此操作精度要高很多,而且很容易将多种功能集成到一个界面中;但是同样的思路完全不适用于移动端(反例实在想不起来了,大家帮忙想想),相信一个杂乱无章的uiapp,功能再强大,如果用户盯着你的界面超过3秒,就会感到头晕,而且只有多次点击按钮才能成功。它也一定是一个糟糕的应用程序。那么什么样的操作方式适合移动端呢?ListView的滑动操作就是一个很好的例子。它不需要用户的任何思考,只需向预期内容的方向滑动即可,所以直观的设计才是王道。类似的设计还有Tweetie的下拉刷新,Android4.0标准库引入的ViewPager等等。上述操作都有一个共同的特点——手势操作。由于移动终端(无论是手机还是平板)都是手持设备,手势操作成为其杀手锏也就不足为奇了。自然也就成为了区分移动端和桌面端的重要特征。PeakJi的庞然大物浏览器和输入法(忘了名字)也体现了这一点。有了简单直观的手势操作,还有一个不得不提的功能——推送通知。用户是懒惰的。一台机器安装了数百个应用程序,而您的应用程序可能每月只打开一两次。当然,这不是你想看到的。如果您的应用程序是网站客户端,那么推送通知是一个很好的工具。怎么做?我总结了以下流程:1.连接社交网络,获取用户信息,分析用户兴趣2.在你的网站或客户端记录用户的使用习惯,逐步接近用户真正的兴趣3.根据获取的用户兴趣,push可以看到他感兴趣的内容,而不只是“通知”那么简单。像新浪微博,一天一掌新闻,太多了只会让人觉得烦,也无法很好地与用户沟通。效果;只有推送用户感兴趣的内容,才会吸引他们的注意力,增加你的应用在用户心中的权重。最后一点我觉得很重要的就是一致性,操作系统要保持操作习惯的一致性。比如左上角的返回按钮,Android4.0的ViewPager滑动换标签等等,这样做最大的好处就是降低了用户的学习成本,把你的app和OS融为一体。当然,在OS的框架下,也有创新的APP。比如安卓下的类siri应用Maluuba,就大胆采用了Metro风格的设计,但操作起来并不会感到陌生。最大的原因是ViewPager的滑动动作被保留了下来。