Android 4.4发布了新的API并为用户和开发者加入了新的特性我的同事侧重介绍一些大的改动细节,然而我更关注一些细节变化以及开发者在开发过程中可能会遇到的行为改变。 权限启动快捷键 在API 19中 已经添加了 这些权限实际上并不是新功能。它们在Android 1.x 的时候就已经被定义好了,在那个时候这些权限是被定义在初始化应用里面而不是公开在SDK, 所以使用了新权限的应用可以获得权限所设定的能力,同时也能运行在老版本的安卓设备上。 外部存储外部存储的规则改变了。回到4.1,读取外部存储权限被引入作为写外部存储权限的一个补充,而在那个时候并不是必须的。现在,这个权限在4.4中被加强了,但是以一种不同寻常的方式。从访问控制角度来看,外部存储被分成两个主要部分:1、App所在的目录;2、其他地方。 读取或者写入数据到你的App所在的位置,不需要任何权限。这基本可以适用任何通过Context里面的方法可以访问的目录,比如 为了读取外部存储上其他数据,应用必须获得 更灵活的方法 与系统管理的计时器相关的周期性行为在默认情况下会变得更灵活,比如计时器中的 之前的精确方法 从4.4开始,没有任何方法可以创建一个重复的精确闹钟。如果你需要闹钟精确并且可重复,必须调用新的 如果你使用SyncAdapter,由 因为这些功能是需要显示设置targetSdkVersion为至少19 ,所以在这个版本之下的并没有这些改变。但是一旦增加了这个版本必须特别注意并且测试你的应用的兼容性。长期来说,尽可能支持灵活时钟和同步将使你的应用尊重设备的电池从而提升整理用户体验。 位图重用为了更进一步帮助应用程序减少内存占用,android 4.4 建立了重用位图分配的API。简单来说位图分配使得开发者很快达到堆限制。从Android 3.0 开始,使用BitmapFactory解码数据时候就可以重用位图实例(使用 BitmapFactory.Options 中的inBitmap ),但是约束相当的大。图片必须恰好是同样的尺寸和配置,并且只允许JPEG/PNG解码。 在Android 4.4中,我们现在有 但是约束还是存在的。当位图被创建,它有尺寸大小和配置,其中配置定义了分配的总字节数。对于实例来说这种初始分配大小是不能被改变的。所以当我们多次重配置位图时,每次改变都不可以让需要的字节数超过初始分配大小。 举个例子,可以安全的重配置一个 换句话说,如果你的应用程序可确定一个合适大小的单个实例,即使它可能比需要在任何给定时间的像素较大,仍然可以减少内存使用。单个360KB点阵 图重用为300×300和200×200的图像(显然不能同时显示),是比两个单独的实例需要520KB(360KB+160KB)更好。 更智能的集合类 为了加入 Immersive模式 Android 4.4引入了一组新的布局标志可用于标记系统UI的可见性。从4.0开始,应用有隐藏状态栏和软导航按钮功能,并暂时使用 为了增强这一点,在Android的4.4添加了 下面是一个简单的例子,内置一个视图单击处理方法通过需要的标志组合(通过设置
之前,我提到的第二标志制作身临其境模式“粘性”。此标志的行为跟第一种方式一样,除了当在任何时候用户回到系统的UI元素的时候,他们会自动隐藏一段时间后而非永久地留放回原处。应用程序可以通过清除粘标志取消此模式。 WebView在4.4中,WebView也有一些新的改变,现在是完全建立在谷歌的Chromium源代码上。带来的性能改进和来自HTML5和CSS3新功能,但它也意味着有一些行为上的差异需要开发者适应。
此外, 谷歌提供了一个很好的文档,包含所有可能会遇到迁移到新的WebView的问题细节。 App Ops回归在4.3初现的App Ops功能现在还没完全准备好。但是有一些已经还是在4.4 SDK中暴露了出来。 现在已经有 不管我们喜欢还是不喜欢,动态权限执行的模型将会来临。在随后SDK的发展需要密切关注这些元素。 新运行时自从诞生以来,Android一直依赖虚拟机运行时,即是我们称之为Dalvik,它被用来执行许多应用程序被编译后生成的Java字节码。Dalvik是从自下而上构建的,提供给安卓Java运行时,使得安卓适合于操作系统需要的进程隔离和安全模式。 然而在Android的4.4中,我们可以看到Dalvik的生命周期是有限的,并且将很快由一个完全新的实现被称为Android的运行时 (ART)的替换。它还鲜为人知,超过我们收到的介绍范畴。主要的区别似乎是ART将在安装时把Dex字节码编译成本地指令,而不是Dalvik通过使用 实时(JIT)编译模型在运行时处理这些。与一些报道相反,似乎没有被任何证据表明这种变化是在全是根据有关Java语言的许可或所有权问题。 ART编译器似乎支持两种模式:快速模式和便携模式。快速模式是类似于JIT(在运行时编译的代码),而便携模式似乎使用LLVM关联预编译。这LLVM的连接可能最终解释的几个版本以前的AOSP的GDK项目神秘现象。 在Nexus 5的设备上,ART被激活从而可以被用来代替Dalvik,这样就允许开发者来测试应用程序和提供有关可能突然出现的新的运行时环境中的任何问题的反馈。所有的开发人员都至少尝试开发启用了ART的应用程序并且报告任何有趣的发现给Google。 这个是我们关于KitKat开发者指南八篇中的一篇,本周晚些时候回来看看新的更新或者关注我们的twitter。 |