写点什么

2020 年末知识大总结:Java 程序员转 Android 开发必读经验一份,vue 总结来了

作者:嘟嘟侠客
  • 2021 年 11 月 26 日
  • 本文字数:2154 字

    阅读完需:约 7 分钟

啰哩啰嗦的说说 Java 和 Android 程序的区别:


Android 是主流智能手机的操作系统,Java 是一种开发语言,两者没有好坏优劣之分,只是两种职业岗位的选择。学安卓从事移动互联方向开发,学 Java 从事软件、网站开发。而安卓上的应用大多是 Java 编写的,所以建议在安卓前期的 Java 学习阶段中,要用心学好。

言简意赅的说说“转”前的准备:

其实 Java 程序员要自学安卓开发的基础知识还是没有什么难度的,毕竟语言相通,特性相似, 阅读安卓源代码的门槛以比较低一些,作为能够考虑“转”的合格的程序员的你,自学能力和相关的基础知识应该不是问题,学习安卓也相对比较轻松一些。


所以 Java 程序员转安卓开发可以看做是一次“增量更新”,只需要学习一下安卓的基本组件:Activity、ContentProvider、Service、BroadcastReceiver;


了解一下安卓中的 Intent,Handler,Adapter 以及各类事件的传递方式(onClick,onTouch 等);


同时辅助一定的代码量,像 JNI、AIDL 什么的都可以看一下;


你还要摒弃“UI 元素像素位置”这个概念,安卓本身是允许通过设定元素位置来制作 UI 的,如果你这样做导致的结果便是大批机器不适配,那么显示效果就有点惨不忍睹了,所以不要妄想通过获取屏幕大小来调整 UI,像 LinearLayout 在 swing 或者 swt 上可有可无的东西,在安卓上是必须要精通的。


还有熟悉 ide,安卓提供的开发框架、Java 及其他编程知识等。


当然,小编在此说的只是九牛一毛,还有很多在开发过程中需要注意的细节问题是我们没有提到的。

站在巨人肩膀上

下面小编跟大家分享一下前人关于技术开发转移动应用开发的经验,希望对大家有借鉴的作用:


刘铁峰,海豚浏览器 CTO


因为具体的开发场景不一样,目标的读者的经验也各不一。分享一点转型过程中,所需要补充的知识点和逻辑上的转变。


移动开发和 PC 上的开发带来了哪些不一样?


在我看来,从 2002 年之后,传统桌面的开发者基本都转向了 J2EE/.NET/LAMP 等以 Web 技术或者服务器端开发技术为主的开发方式。使用 C/C++/MFC/Delphi 等开发 C/S 模式的用户越来越少,甚至工作的需求也开始变得越来越少。


这样在技术体系上,开发者的经验开始基本上覆盖在:


1.HTML + CSS + JavaScript


2.各种脚本语言(PHP/http://ASP.NET/JSP/Python/Ruby)操作服务器 API


3.服务器数据处理逻辑(O/R Mapping, 数据库连接池,各种如 AOP 等设计模式,甚至 DSL 等等)


4.大型服务器的架构设计(分布式架构,各种负载均衡,服务器连接优化)


5.数据库(分布式数据库,事务处理,大规模数据的存储、查询优化)


6.大数据处理(Hadoop, Hive)等等。



那对于移动开发上需要什么?

不管是 Android / iOS /WP , 其实对于开发的需求上逐渐回到了 2002 年之前,大概类比 MFC/Delphi 的时代,更加合适。


移动开发者的技能需求发生了转变,需要的经验变成了:


充分理解各移动平台的进程架构和程序生命周期逻辑(程序启动,程序被系统 suspend/kill, Services)


1.界面设计(各种 UI 控件,事件处理)


2.数据处理逻辑(客户端缓存、多线程并发)


3.网络数据处理


4.平台相关特性(系统 API 调用,系统通知机制等)


5.各种性能处理。


因此,在学习的路线和需要的经验上有了不同。


如果需要从非移动开发者往移动开发者进行转型,哪怕同样使用的是 Java 语言,需要的就是了解不同的库以及处理不同领域的具体问题。


在移动设备的开发上,我归结为三大类问题:性能的问题,界面响应的问题,产品的稳定性。这些是技术人员可以需要最为注意和保障的。


季逸超,Peak Labs 创始人


记得当时 iPhone 出来后,让人们看到了一个与传统的“窗口”完全不同概念的逻辑:界面方面一个应用占满整块屏幕,程序方面代码也都是在严格的沙箱内运行。当时我就意识到这将是一整套全新的规则体系,后来渐渐从表面往深层看,写了几年烂代码慢慢我也有了点心得:


1.淡化文件的存在,而凸显应用和工作流。


2.尽量避让主线程/UI 线程,避免锁界面。因为桌面应用锁 UI 的话只不过是一个窗口,而移动应用会给人感觉是“手机”这个整体挂了…


3.能迅速完成的操作/运算就不要指望后台,自己的程序随时可能被 kill 掉。后台只留给 VOIP、网络操作之类的。


4.尽量加快启动速度。移动产品用的频繁,但单次使用远比桌面要短,所以不要出现 Photoshop 那样让用户傻等的情况。即使用个“假象”也要让用户觉得启动挺快的。


5.同一个功能最好有多种交互/操作方式。不像 Windows 一统桌面江湖,现在各个版本的 android、iOS 用户之间使用习惯迥异,最好能让人们的习惯都能 work。


6.最好不要让 UI 控件太显眼(比如街机游戏中硕大的摇杆遮住了人物),但也别太隐晦(猛犸浏览器 4,哈哈哈)。


7.用户其实很在意耗电和发热量,桌面用户从不在乎…


8.很多功能别人说做不到或说平台不允许不开放的时候,总有人用匪夷所思的奇葩手段实现了…


个人拙见请勿轻信哈~


王思达,爱安卓,爱刷机,爱移动互联网


《Android 学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享


最后


想要了解更多关于大厂面试的同学可以点赞支持一下,除此之外,我也分享一些优质资源,包括:Android 学习 PDF+架构视频+源码笔记高级架构技术进阶脑图、Android 开发面试专题资料,高级进阶架构资料 这几块的内容。非常适合近期有面试和想在技术道路上继续精进的朋友。


本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

用户头像

嘟嘟侠客

关注

还未添加个人签名 2021.03.19 加入

还未添加个人简介

评论

发布
暂无评论
2020年末知识大总结:Java程序员转Android开发必读经验一份,vue总结来了