Android App开发中的适配

     Android手机的碎片化问题不用赘述,在此对适配什么及适配方法进行一次总结。

     我们先来看被适配的对象。
     第一类是操作系统适配,即适配Android 2.X,4.X,5.X……每个版本的操作系统,都有其特定的变化,对于App开发者而言,最重要的一点就是要明确每一个版本API Changed List。对变更列表中的新增API,可以选择性使用;对废弃API,可以及早应对;对变化的API,尤其是形式不变而含义变化的API,要重点研究,以免在不同版本中带来行为上的差异。比如权限分裂及默认值的变化,由串行到并发的变化,精确计时与非精确计时的变化等等,这些都会带来隐藏很深的适配性问题。
     另外,就是仔细处理好MinSdkVersion、TargetSdkVersion、CompileVersion,每一个数值的选择都不是随意来的,这些也影响对操作系统的适配。
     第二类是厂家型号,即适配三星、小米、Note5、米2……这块有两种适配方式,一是公版适配,二是定制开发。我们先从公版适配说起,这也是大多数App在用的方式。
     公版适配这里指的是只存在一套代码,一个APK,要适配所有的厂商或机型。比较差的方式通常就是在代码中涉及到不同厂商或型号的地方通过if语句利用Build里的厂商标识等进行不同的策略,其结果就是适配得越多,if语句越复杂,越难维护。其实只要利用一个工厂模式就可以做得更灵活一些,例如:

     定制开发往往会形成分裂的版本,即区别于公版的独立APK,这种适配可以与厂商SDK深度结合,往往会通过预装,与ROM结合得更紧密。
     第三类是硬件兼容。主要是对包括屏幕分、CPU、内存、外存、传感器等进行适配,其主要思路也是抽象隔离。

     搞清楚要适配的对象以后,我们接下来从三层架构的角度分别总结一下适配方法。
     在数据层,我们最主要的是进行外部存储的适配,即考虑数据存储的位置、格式、易失性等。通常这种持久化的数据存储,都要考虑存储位置及其易失性问题,不要把关键数据保存在易失的外部存储当中,还有Android 5.X开始的外卡的不可访问性,进而,可以根据存储空间和数据特点考虑明文格式还是密文格式,压缩还是不压缩。
     在业务逻辑层,主要的是根据不同的运行环境进行策略调整,以策略为主。
     在展现层,对于屏幕分辨率、方向,可以采用相对单位dp、sp代替pix,可以使用Android提供的layout等常规适配方法。对于交互和界面元素,可以采用交互降级、视觉降级的思路,即在不同性能的手机上采用不同的交互复杂度及视觉效果、动画效果。对于系统元素,如桌面图标、通知栏等,由于Rom、Launcher差异太大,建议远离这些部分,不要去搞,否则成本可能会大于收益。

     适配是很辛苦的事,分离变化,隔离变化,多利用设计方案来求解,要比到处随意增加if语句来得更清晰。

——欢迎转载,请注明原文出处 http://blog.csdn.net/caowenbin ——
——欢迎关注微信号“曹文斌的软件思考”,共同探讨软件人生——
Android App开发中的适配_第1张图片

你可能感兴趣的:(android,适配,兼容)