Android一套代码适配不同Android版本终极指南



前言

  原来BOSS秉承着多生孩子好打架的原理,成立多个部门各自为战。然后同样的功能,不同部门做的各不相同给客户呈现的也是神仙大战,各不相同。为此客户多番投诉说同一个公司的产品,不同的型号为啥表现形式不一样,为此有了今天得这篇文章。怎么在Android中使用同一套代码适配多个Android版本。本篇不是讨论移动端的多适配,而是在Room开发定制的Android系统级别应用。



一.具体业务需求

下面我们来看一个这样的场景,我们在Android的PowerManager中新增了一个isScreenReady的方法,可是现在由于公司要求所有平台机型和Android版本都统一使用同一份代码,那么这个私有接口就会导致在没有增加上述接口的机型上面编译不过,那么这个怎么处理呢。

public static boolean isScreenOnFinish(Context context){PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);boolean ifOpen = powerManager.isScreenOn();boolean ifScreenReady = powerManager.isScreenReady();//这个接口不是通用的Log.e(TAG, ifOpen ? "isScrrenOn" : "isScrrenOff");Log.e(TAG, ifScreenReady ? "DisplayReady" : "DisplayNotReady");return (ifOpen && ifScreenReady );}

这里有两个办法可以解决上面的问题,下面让我们一一道来。

1.1 通过反射

反射的好处就是可以编译,通过然后再运行时查找对应的接口是否存在。具体如下:

public static boolean isScreenOnFinish(Context context){PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);boolean ifOpen = powerManager.isScreenOn();boolean ifScreenReady = true;Method misScreenReady = powerManager.getClass().getDeclaredMethod("isScreenReady");misScreenReady.setAccessible(true);ifScreenReady = (boolean)misScreenReady.invoke(powerManager);Log.e(TAG, ifOpen ? "isScrrenOn" : "isScrrenOff");Log.e(TAG, ifScreenReady ? "DisplayReady" : "DisplayNotReady");return (ifOpen && ifScreenReady );}

1.2 添加适配层

如上反射的方法总是感觉不优雅,其实还有一种方法就是添加适配层,在Android,mk编译的时候根据Android的版本选择具体的实现文件。下面我们看下怎么实现。

步骤一: .修改Android.mk,根据Android选择编译文件
Android一套代码适配不同Android版本终极指南_第1张图片

步骤二 :添加适配层文件,如下:
Android一套代码适配不同Android版本终极指南_第2张图片
看看代码里面做了什么,如下:
Android一套代码适配不同Android版本终极指南_第3张图片
这样就可以根据不同Android版本的特性来实行相关的接口了。大功告成了。



结语

修行至此,恭喜读者你已经对Android一套代码怎么适配多个Android版本有一定了解了,行走江湖是可能的了,平台化的道路就可以开启了。



写在最后

各位读者看官朋友们,Android一套代码怎么适配多个Android版本,希望能吸引你,激发你的学习欲望和斗志。在最后麻烦读者朋友们如果本篇对你有帮助,关注和点赞一下,当然如果有错误和不足的地方也可以拍砖。

更多相关文章

  1. 【Android 内存优化】Bitmap 硬盘缓存 ( Google 官方 Bitmap 示
  2. Unity调用Android原生Java代码以及Unity打开Android原生Activity
  3. AES加解密算法在Android中的应用及Android4.2以上版本调用问题
  4. 告别Dagger2模板代码:DaggerAndroid原理解析
  5. 获取Android的Java源代码并在Eclipse中关联查看
  6. Android : android 9.0 audio 接口分析
  7. EditText实现输入限制和校验功能实例代码

随机推荐

  1. Android中水波纹使用之自定义视图实现
  2. Android(安卓)studio 单元测试初探
  3. 初学Android,使用自定义的XML资源(十八)
  4. 基于ARM Cortex-A8和Android 4.x的联动报
  5. Android进程管理及静态变量垃圾回收
  6. Android文档(三)-数据存储
  7. 低版本的android系统如何使用ActionBar
  8. Android(安卓)关于内存溢出的一些误会
  9. Android 设计指南简体中文版
  10. Android(安卓)UI五大布局