Android 7是谷歌推出的智能手机操作系统,代号为:AndroidN。谷歌2016年的I/O开发者大会在美西时间2016518-20日召开,地点为山景城的Shoreline Ampitheatre圆形剧场,新版的Android N系统正式发布,作为android 开发者还是得紧跟潮流,看一下android 7 有什么特性,这有助于开发出 更好的 应用。

Android N 与前面的系统相比主要是有以下四个新特性:

默认多窗口支持;

强化通知;

Java8 支持;

禁止Native 动态链接系统库

下面就分别说明一下每一个新特性:

一、默认多窗口支持

多窗口支持在Android M中已经存在,具体是系统允许再启动某个Activity时附带上特殊参数,该应用可以在最近任务窗口中和主应用分开显示。就是muti-tasking支持,但是Android N中不再需要传递特殊参数,默认就可以多窗口支持。这样就对App布局适配要求提高了(因为全屏时和分屏时activity所在区域有明显不同,如果用了相对布局,可能会在分屏时显示不全),这一个可能不算什么,但是下一个就很难再淡定了,Android N将支持分屏情况下drag and drop Android 4.0就开始有的特性)。这意味着你可以将一个应用内,甚至不同应用间的分屏情况将一个分屏幕控件拖拽到另一个分屏幕。也许这个可以用来完成拖拽图片,然后快速发图。另外作为分屏的一种特殊形式,画中画(picture in picture)也得到相应支持。不过据google的工程师说,画中画模式主推Android TV中应用。不过无论如何,现在很多功能都可以通过浮窗接口实现。画中画对于做视频应用或者有视频支持功能的应用非常有帮助。

这里有两个点要注意:1、虽然分屏状态下两个应用都可见,但是对于非获取焦点状态的应用当前是处于OnStop状态的,也就是说,并没有实际在运行中。原本OnStop的应用应该是不可见的,但是现在可见了。2、虽然分屏状态下应用不会双倍地占用内存,但是内存占用肯定会比正常大,注意分屏模式下即时释放内存。注意对你程序进行适配。如果你已对多个尺寸进行适配,就可以不用过多留意适配问题。

二、强化通知

通知栏一直是android 引以为豪的方面,相对于IOS通知栏来说,android通知栏开放性实在没话说,自定义控件,自定义Action ,除了快速回复外基本都可自定义。现在Android通知栏已解决快速回复了,这个新特性简而言之就是为了满足快速回复的一切需求,当然了除了快速回复,还有根据应用归档通知,这也很有用的。还有Android N中去掉了三个广播,分别是:CONNECTIVITY_ACTION:网络变化 ACTION_NEW_PICTURE:添加新图片 ACTION_NEW_VIDEO:添加新视频 。这样的话原来很多应用都通过监听网络变化来处理不同功能,在android 7中 都 不能用了 。这时只能使用android 5提供的jobschedule来 完成了 。jobscheduel有很多好处,他会根据用户当前设备的情况比如当前ram,电量,模式,是否应用在前台等决定是否执行特定逻辑。

当然了,这里的去掉只是不允许静态注册监听广播,至于动态注册的不受影响。之所以去掉应该是从性能考虑。

三、禁止Native 动态链接系统库

android 7开始,系统将禁止第三方应用so文件链接到系统lib库,包括但不限于李炳辰rypto.so,libandroidruntime.so,libicu.so,libbinder.so。动态链接上述库轻则弹出Toast提示,重则直接crash。这个新特性对于一般应用影响不会太大,但是对于那些在底层做了大量优化和调用的应用来说就让程序员伤脑筋了。至于解决办法暂时只想到改用静态链接(改变编译时的编译选项,由动态链接变静态链接会影响安装包大小)。

四、支持 java8新特性

Android 7开始支持java8的编译,前提是要在gradle文件中显式声明使用jack编译器。Jack编译器是一个将java文件先编译成class文件然后再编译成dex的一个整体编译器,不再需要手动一步一步编译,jack直接就可以完成。声明使用jack编译器后就可以支持java 8新特性了。但是android 7并没有将java 8新特性支持完整,只是支持了主流的新特性。包括:定义接口默认实现方法。Lamda表达式支持(一种新语法)。Stream接口。Repeatable annotations以及 method refrence(一种新语法)。对于这些新特性大家可能感觉很陌生,这里笔者转载了一篇关于java8新特性的博客,点击这里可以查看。如果有想看java7 的新特性的可以点击这里查看,java7都出了那么久了,如果还不知道它的新特性,那就愧对java 工程师的名字了。

注:有些新特性可能会有性能隐患,如lamda表达式本质上会生成匿名类。还有因为jack编译器不会产生.class中间文件,直接生成最终的dex文件。所以在.class上做trick的一些库或者项目可能会失效或者出问题。所以在使用之前,一定得好好测试,否则会出意外的。

更多相关文章

  1. Android最新支持包Design简介
  2. Android应用开发提高系列(4)——Android动态加载(上)——加载未安装A
  3. Android的nodpi,xhdpi,hdpi,mdpi,ldpi
  4. 如何设计一款AndroidAPP
  5. Android(安卓)架构设计的思想与原则是什么?
  6. Android系统架构解析
  7. Google工程师解析Android系统架构
  8. Android(安卓)文件上传支持拍照录用录视频
  9. Android应用开发提高系列(4)——Android动态加载(上)——加载未安装A

随机推荐

  1. Android内核源码交叉编译
  2. 高焕堂android中文书全,电子文件for vers
  3. android:layout_gravity与android:gravity
  4. Adb移植(一)简单分析
  5. android 几个常用命令
  6. Android——设置固定横竖屏
  7. Android 下载文件及写入SD卡
  8. Android官方入门文档[2]运行你的应用程序
  9. LinearLayout和RelativeLayout的比较
  10. Android 4编程入门经典—开发智能手机与