Android系统版本差异及注意事项

一、Android 7.0 Nougat

  1. 分屏,实现多任务管理。用户可以一次在屏幕上打开两个应用。

在手机上,两个应用可以在“分屏”模式中左右并排或上下并排显示。 在电视设备上,应用可以使用“画中画”模式,在用户与另一个应用交互的同时继续播放视频。

  1. 通知栏快捷回复。实时通信应用,Android 系统支持内联回复,以便用户可以直接在通知界面中快速回复短信

  2. 引入全新的JIT编译器,使得App安装速度快了75%,编译代码的规模减少了50%

  3. 移除三项广播:CONNECTIVITY_ACTION(监听网络变化)、ACTION_NEW_PICTURE 和ACTION_NEW_VIDEO(监听相机)

  4. 新增省流量模式

  5. 支持VR

支持分屏

如果您的应用面向 Android N,您可以对应用的 Activity 是否支持多窗口显示以及显示方式进行配置。官方文档有详细的处理流程。

  1. 多窗口模式不会更改 Activity 生命周期
    在多窗口模式中,在指定时间只有最近与用户交互过的 Activity 为活动状态。 该 Activity 将被视为顶级 Activity。 所有其他 Activity 虽然可见,但均处于暂停状态。 但是,这些已暂停但可见的 Activity 在系统中享有比不可见 Activity 更高的优先级。 如果用户与其中一个暂停的 Activity 交互,该 Activity 将恢复,而之前的顶级 Activity 将暂停。

  2. 启用或禁用多窗口显示
    在AndroidMainfest.xml文件的 节点中设置该属性
    android:resizeableActivity=[“true” | “false”]

如果该属性设置为 true,Activity 将能以分屏和自由形状模式启动。 如果此属性设置为 false,Activity 将不支持多窗口模式。 如果该值为 false,且用户尝试在多窗口模式下启动 Activity,该 Activity 将全屏显示。

如果您的应用的targetVersion为24,但未对该属性指定值,则该属性的值默认设为 true。

  1. 支持画中画显示
    在清单文件的 节点中设置该属性,指明 Activity 是否支持画中画显示。 如果 android:resizeableActivity 为 false,将忽略该属性。

    android:supportsPictureInPicture=[“true” | “false”]

  2. 分屏和自由形状模式中 Activity 的最小高度和最小宽度
    android:minimalHeight、android:minimalWidth
    例如,以下节点显示了如何指定 Activity 在自由形状模式中显示时 Activity 的默认大小、位置和最小尺寸:



二、Android 6.0 Marshmallow

  1. 运行时权限
    当应用的targetVersion设置为23时,在运行时需要检查和请求危险权限。checkSelfPermission() 方法用于验证用户是否授予权限;requestPermissions() 方法用于向用户请求权限。

  2. 低电耗模式和应用待机模式
    低电耗模式:如果用户拔下设备的电源插头,并在屏幕关闭后的一段时间内使其保持不活动状态,设备会进入低电耗模式,在该模式下设备会尝试让系统保持休眠状态。在该模式下,设备会定期短时间恢复正常工作,以便进行应用同步,还可让系统执行任何挂起的操作。
    应用待机模式:应用待机模式允许系统判定应用在用户未主动使用它时处于空闲状态。当用户有一段时间未触摸应用时,系统便会作出此判定。如果拔下了设备电源插头,系统会为其视为空闲的应用停用网络访问以及暂停同步和作业。

  3. 移除对Apache HTTP client的支持
    建议使用HttpURLConnection。如果还是想用Apache HTTP client,那么需要在build.gradle中添加

    android {

    useLibrary 'org.apache.http.legacy'
    

    }

  4. 移除了 Notification.setLatestEventInfo() 方法。构建通知用 Notification.Builder 类

  5. 文本选择
    当用户在应用中选择文本时,可以在一个浮动工具栏中显示“剪切”、“复制”和“粘贴”等文本选择操作。

三、Android 5.0 Lollipop

  1. Material design
    Material design算是Android 系统风格的里程碑,其3D UI风格新颖,贴近人机交互;
  2. 改善通知栏,提升可视化、亲近性、可编辑性。同时支持手机在锁屏状态也可接收到通知,用户可以在锁屏状态下,设置接收全部应用的通知或者接收部分应用的通知或者不接收所有应用的通知;
  3. ART(Android Runtime)运行时取代 Dalvik 成为平台默认设置,实现ahead-of-time (AOT)静态编译与just-in-time (JIT)动态编译交互进行;

  4. V7中引入CardView和RecycleView等新控件;

  5. 开放屏幕采集API
    通过MediaProjection屏幕采集API,可以实现录屏功能。

  6. 新增 JobScheduler API
    JobScheduler API允许推迟或指定条件下(如设备充电或连入 WLAN 时)创建执行在后台的任务。

  7. Context.bindService() 方法现在需要显式 Intent,如果提供隐式 intent,将引发异常。为确保应用的安全性,请使用显式 intent 启动或绑定 Service,且不要为服务声明 intent 过滤器。

  8. 新安装和更新需要验证自定义权限
    如果应用定义了一个已安装应用定义的自定义权限,且应用没有使用与该已安装应用相同的签名密钥,则系统不会重新安装应用。

  9. 支持64位系统;

  10. 处理 Intent
    在触发任何 intent 之前检查是否至少有一个适合此 intent 的处理程序。要检查是否存在有效的处理程序,可以调用 Intent.resolveActivity(),避免导致 ActivityNotFoundException。

  11. 电池使用情况统计
    新增的 dumpsys batterystats 命令可生成电池使用情况统计信息,通过它了解整个系统的耗电情况,以及了解应用对设备电池的影响。可以查看耗电事件历史记录、每个 UID 和系统组件的近似耗电情况以及其他信息。

新增了“电池耗电历史”工具,可将来自 dumpsys batterystats 的统计数据转换成可视化格式,以便进行与电池有关的调试。

  1. 启用TLSv1.2 和 TLSv1.1 协议
    某些服务器使用了TLSv1.2,使用WebView打开时,5.0以下的设备页面无法正常打开。

使用Material design

  • 设置应用的 targetSdkVersion 和 targetSdkVersion 为21
  • 在values目录下的style资源文件中创建一个style,让其继承自 android:Theme.Material
  • 在AndroidManifest中指定应用的主题或者Activity的主题为我们设定的样式
  • 谷歌官方我们提供了三种配色风格的Material Design样式:
    黑色主题 Theme.Material
    明亮主题 Theme.Material.Light
    明亮主题黑色ActionBar Theme.Material.Light.DarkActionBar

四、Android 4.4 KitKat

  1. 通过主机卡模拟实现新的 NFC 功能
  2. 打印框架
    Android 应用可以通过 WLAN 或云托管服务(例如 Google 云打印)打印任何类型的内容。在支持打印的应用中,用户可以发现可用的打印机,更改纸张尺寸,选择要打印的特定页面,打印几乎任何种类的文档、图像或文件。
  3. 步测器和计步器
    可以在用户行走、跑步或攀爬楼梯时跟踪步数。
  4. 全屏沉浸模式
    系统 UI 保持隐藏状态,在沉浸模式中,从屏幕顶部或底部边缘滑动手指可以显示系统 UI。

  5. Chromium WebView
    支持使用 Chrome DevTools 进行远程调试。例如,可以在开发机器上使用 Chrome DevTools 检测、调试和分析移动设备中存储的 WebView 内容。

  6. 屏幕录制
    使用命令 adb shell screenrecord 或者通过 Android Studio 中的 DDMS

  7. 分析设备内存状态
    Settings > Developer options > Process stats

五、Android 4.X Jelly Bean

  1. UiAutomation自动化UI测试