设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

Android 4.4 KitKat新特性

2014-6-27 15:07| 发布者: joejoe0332| 查看: 5552| 评论: 0|原作者: alice|来自: 伯乐在线

摘要: Android 4.4发布了新的API并为用户和开发者加入了新的特性   我的同事侧重介绍一些大的改动细节,然而我更关注一些细节变化以及开发者在开发过程中可能会遇到的行为改变。 权限 启动快捷键   在API 19中 已经添 ...


Immersive模式


  Android 4.4引入了一组新的布局标志可用于标记系统UI的可见性。从4.0开始,应用有隐藏状态栏和软导航按钮功能,并暂时使用View.SYSTEM_UI_FLAG_FULLSCREENView.SYSTEM_UI_FLAG_HIDE_NAVIGATION标志为“精益回”体验,视频内容会占用整个显示屏幕。然而,这种模式不是交互式的,而只要用户点击屏幕上任意位置UI控件立刻返回(你的应用程序没有收到的一个事件)。


  为了增强这一点,在Android的4.4添加了View.SYSTEM_UI_FLAG_IMMERSIVEView.SYSTEM_UI_FLAG_IMMERSIVE_STICKY。 在与所提及的场景中使用这些标志,可以在同一个系统中隐藏用户界面,当与用户的全屏应用程序内容进行交互时候还是保持这种方式。对于让用户无需导航控件, 谷歌仍持谨慎态度。但是一个系统级的边缘轻扫手势允许他们在任何时候返回,用户第一次体验这种模式下,系统将叠加出现,迫使确认用户了解如何让UI控件回 来。


  下面是一个简单的例子,内置一个视图单击处理方法通过需要的标志组合(通过设置android:onClick属性)使得用户进入Immersive模式。



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public void onToggleClick(View v) { 
    //Hide the system UI.
    //The system will make the controls re-appear for us
   //when the user does an edge swipe from the top or bottom.
v.setSystemUiVisibility(
      /* This flag tells Android not to shift
       * our layout when resizing the window to
       * hide/show the system elements
       */
      View.SYSTEM_UI_FLAG_LAYOUT_STABLE
      /* This flag hides the system status bar.  If
       * ACTION_BAR_OVERLAY is requested, it will hide
       * the ActionBar as well.
       */
      | View.SYSTEM_UI_FLAG_FULLSCREEN
      /* This flag hides the on-screen controls
      */
      | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
      /* This flag tells the controls to stay hidden until
       * the user brings them back explicitly with a gesture
       */
      | View.SYSTEM_UI_FLAG_IMMERSIVE);
}

  之前,我提到的第二标志制作身临其境模式“粘性”。此标志的行为跟第一种方式一样,除了当在任何时候用户回到系统的UI元素的时候,他们会自动隐藏一段时间后而非永久地留放回原处。应用程序可以通过清除粘标志取消此模式。


WebView

  在4.4中,WebView也有一些新的改变,现在是完全建立在谷歌的Chromium源代码上。带来的性能改进和来自HTML5和CSS3新功能,但它也意味着有一些行为上的差异需要开发者适应。

capturePicture()被正式弃用,这是为了支持一个获得WebView内容快照更标准的方法。比如手动触发的onDraw()可以绘制成位图支持Canvas。

  此外,evaluateJavascript()提供了执行JavaScript的新方法,这新方法支持回调。然而具有同样功能的loadURL()方法并没有不被鼓励使用或在文档中被弃用。

  谷歌提供了一个很好的文档,包含所有可能会遇到迁移到新的WebView的问题细节。


App Ops回归

  在4.3初现的App Ops功能现在还没完全准备好。但是有一些已经还是在4.4 SDK中暴露了出来。

  现在已经有AppOpsManager, 这是一个系统服务用于执行应用程序可以沿着它当前的静态权限执行的操作。虽然还不清楚这个API最终将发挥什么作用,但是我们可以看到AppOpsManger所负责的一些操作类型。每个操作由一个OPSTR_常量定义,并且在Android4.4中,他们都被用作处理用户位置。

  不管我们喜欢还是不喜欢,动态权限执行的模型将会来临。在随后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。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部