Android 始终致力于电量优化和后台控制,经过后台控制程序进程,优化电量,进而提高待机时间,来提高用户体验。咱们但愿开发者经过下图中的要求,来测试本身的应用,进而提高本身的应用质量。android
从Android O 开始,应用能够像之前同样,在前台启动服务,可是当被转到后台的时候,应用只有几分钟的时间继续进行服务,而后,他的后台服务就会被中止。当应用在后台时,是不能使用 startService 来启动服务的,会抛出 illegalStateException 错误。数据库
因此,对于开发者来讲,若是你的应用须要和开发者在后台保持交互的话,你须要按照下面的方案进行优化编程
不少开发者反应,电池耗电是应用开发过程当中最不爽的因素,然后台定位就是电池耗电的最大缘由之一。若是大量使用定位,电池就会消耗很快,用户就会禁用定位,而后你的应用体验就会变得不好。进而会致使你的应用的一些功能失效。因此,咱们在 Android O 的时候,对定位加了必定的限制。安全
当你的应用在前台的时候,仍是能够像往常同样,你实时无限制的收集用户信息,可是,当你的应用在后收集的时候,收集速度会被限速,大概每小时会有几回的位置更新。架构
对开发者来讲,有如下方案能够用于优化后台位置信息的限制编程语言
这也是以前 Android 系统中存在的一个问题,隐式广播可能会致使系统的大量服务被启动,进而会致使系统不稳定。因此,Android O 中将不在 androidmanifest 中为隐式广播注册广播接收器。具体限制能够参考下面的几条:模块化
针对上面的限制,咱们建议广大开发者使用一下方法进行优化:工具
Android 的新版本将会支持更多的现代化设备,应用也应该利用这些新的特性来提高用户体验,这些新的体验咱们在下面会一一介绍。开发工具
从 Android O 开始,系统开始支持特长屏幕,不少手机厂家开始发布特长屏幕的手机。对于广大开发者来说,请不要对屏幕的纵横比作出错误的假设。不然会影响用户的 UI 体验。测试
从 API 26 以上,系统就不会为应用设置默认的屏幕纵横比,因此你的应用应该适应不一样的屏幕尺寸,来作一些屏幕自适应的设计。
若是真的须要最大的屏幕纵横比声明支持的话,纵横比应该这设置
Android O 也对凹口屏幕进了相关的支持,应用能够在 androidmanifest 中经过一下方式实现对刘海屏幕的支持
从 Android O 开始,系统开始支持画中画模式。画中画模式是一种特殊的多窗口模式,能够用来视频聊天,播放电影,导航等场景。
当一个Activity 处于 PIP 模式,他会处于暂停状态,可是仍然会显示内容。出于这个缘由,你应该保证你的应用不会在 onPause()中会暂停播放,正确的作法是,应用在 onStop() 的过程当中暂停播放视频,在 onStart() 的时候继续播放。
从 Android O 开始,系统支持多显示支持,若是 Activity 支持多显示器显示,系统会自动启用多显示器支持。当应用启动一个 Activity 的时候,能够经过 ActivityOptions.setLaunchDisplayId() 来制定在哪一个显示器上进行显示。每一个显示器都有本身的配置,当应用从一个显示器到另外一个显示器的时候,Activity 会根据显示器的配置自动修改某些属性。须要注意的是:虽然 Activity 运行在多个显示器上,可是仍然只有一个 Activity,不要假设暂停的 Activity 必定是不可见的。
最后,咱们但愿开发者可以利用最新的开发工具,来提高应用开发效率和可靠性。 为了帮助开发者更有效,更容易的开发应用。咱们在今年的 Google I/O 上推出了 Android JetPack 。其中包含了应用开发库、工具、以及最佳实用指南。经过提供通用的基础配件和组件,帮助开发者更好的专一于应用开发的业务逻辑。
因为时间缘由,咱们没法详细的介绍每一个模块的具体使用方法,请你们参考文档和实例代码,在应用中使用最新的 Android JetPack 组件
全部的扩展类,例如 v4 和 v7 在 JetPack 中使用统一的包名 androidx。同时 gradle 也提供了相应的转换支持。
咱们下面来介绍一下 JetPack 的架构组件
架构组件提供了数据存储、管理生命周期等模块化的功能帮助开发者避免在开发过程当中的常见错误,减小样板文件。 在架构组件中,Room 是支出流畅数据库访问的对象映射抽象层,其余的组件的的说明能够在下面的图片中看到
有些组件能够放在一块儿使用,好比:LiveData 和 Room,当 Room 中的数据有更新的时候,他就会更新 LiveData 中的数据,从而自动触发界面中的更新。
咱们如今也很是鼓励开发者使用 Kotlin 编程语言,相较于 Java,Kotlin 能够减小25%的代码量,而且能够有效防止 NullPointerException,Kotlin 和 Java 的二进制代码彻底兼容,能够互相调用,因此你们能够逐步的迁移到 Kotlin 的开发语言。
咱们在 Android 9 SDK 中,对 Kotlin 添加了可控性注解,若是你的项目中违法了可控性注解的协议,你的代码在 IDE 中会出现警告,虽然只是警告级别,可是咱们想再下个版本的 IDE 中提升错误等级。
从去年 Google I/O 中发布 Kotlin 成为 Android 开发的官方语言,咱们作了相关的问卷调查,在调查中咱们发现,40%的开发者已经在使用 Kotlin 进行开发
JetPack 中,咱们也提供了 Kotlin 的扩展库 KTX,使 Kotlin 的代码更加简单整洁,更符合 Android 开发习惯。KTX 能够帮助你更简单的编写业务的核心代码。
经过使用 Kotlin,开发者们也尝到了甜头,咱们在国内的合做伙伴 Camera360,使用 Kotlin 得到了全球业务上的增加,大家能够经过图片中的二维码,了解关于 Camera360 的开发者故事
Android Studio 3.1中也更新了许多新工具,帮助开发者更好的开发和测试 Android 应用。例如:支持 Kotlin Lint
Android Studio 3.1 中 还有不少新工具,可是因为时间关系咱们没法一一作介绍,总而言之,Android Studio 3.1 提供了更好的编译速度、更快的模拟器、更全面的分析器、更好的 Kotlin 支持和更好的架构组件的支持。欢迎开发者们在之后的开发过程当中使用。