天天看点

Android 8.0新特性

        非常抱歉,我个人写博客,一般懒得去排版,矫正,所以,有点乱。我也根据编辑文字的经验,尽可能有条理,方便阅读和理解结构内容。

最近中国的IT的创业应该到了一定的阶段了,互联网+的概念,走的差不多了。在这个融资环境下,机会不再更多,不再蜂拥,更多的理性和高水平。国内的小公司,业务多少有些变化了,其中,非常可喜的是,有一些公司,开始承接东南亚或者港澳日本的项目了,或者西方的国家,把研发搬到中国来。。除了依然像富士康一下的外包IT公司,这样的一些公司,蛮漂亮的,注入了新的活力。

      好了,扯淡的话,就不讲了,在说andorid8.0之前,先回顾一下,老的版本。

android1.0			API1	 2008.10
android1.1			API2	 2009.2
android1.5			API3	 2009.4 	Cupcake
android1.6 	 				 2009.9 	Donut
android2.0/2.1 		API7	 2009.10	Eclair
android2.2 			API8 	 2010.5.20	Froyo
android2.3			API9 	 2010.12 	Gingorbread	早期比较稳定。NFC.

android3.0 			API11	 2011.2		Honeycomb 	平板。Fragment
android4.0 			API14 	 2011.9		T-Mobile-android手机
android4.1.2 		API16 	 2012.6.28 	JellyBean 	比较稳定,从4.0开始将2.3与3.0整合,可以同时运用在手机和平板
android4.2 	 		API17    2012年10月30日		全景拍照,键盘手势,
android4.3 	 		API18

android4.4W	 		API19/20 2013.9 	KitKat	力求防止安卓系统继续碎片化、分散化.

android5.0	 		API21	 2014.10.15	Lollipop 棒棒糖。	新的Material Design设计风格.

android5.1			API22

android6.0M	 		API23	 2015.5.28	Marshmallow棉花糖	软件体验与运行性能上进行了大幅度的优化

android 7 N			API24	 2016年8月22日	Nougat	牛轧糖

android 7.1 N		API24    2017年4月3日
android 7.1.1       API25

android 8.0 O    	API26     2017年2月  Android Oreo奥利奥
android 8.1         API27

android 9.0P        API28     Pie    2018年1月25日,最早开发版;2018年8月7日上午.

android 10.0 Q      API29          2019年3月DP1,5月release.
           

新特性:

通知

在 Android O 中,我们已重新设计通知,以便为管理通知行为和设置提供更轻松和更统一的方式。这些变更包括

通知渠道:Android O 引入了通知渠道,其允许您为要显示的每种通知类型创建用户可自定义的渠道。

通知标志:Android O 引入了对在应用启动器图标上显示通知标志的支持

休眠:用户可以将通知置于休眠状态,以便稍后重新显示它。

通知超时:现在,使用 

setTimeoutAfter()

 创建通知时您可以设置超时。

通知设置:当您使用 

Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES

Intent 从通知创建指向应用通知设置的链接时,您可以调用 

setSettingsText()

 来设置要显示的文本。

通知清除:系统现在可区分通知是由用户清除,还是由应用移除。

背景颜色:您现在可以设置和启用通知的背景颜色。

消息样式:

现在,使用 

MessagingStyle

 类的通知可在其折叠形式中显示更多内容。更改了 

ContentResolver.notifyChange()

 和 

registerContentObserver(Uri, boolean, ContentObserver)

 在针对 Android O 的应用中的行为方式。

AutoFill自动填充框架

Android O 通过引入自动填充框架,简化了登录和信用卡表单之类表单的填写工作。在用户选择接受自动填充之后,新老应用都可使用自动填充框架。

Settings > System > Languages & input > Advanced > Input assistance > Autofill service

画中画模式

当某个 Activity 处于 PIP 模式时,它会处于暂停状态,但仍应继续显示内容。因此,您应确保您的应用在 

onPause()

 处理程序中进行处理时不会暂停播放。相反,您应在 

onStop()

 中暂停播放视频,并在 

onStart()

中继续播放。如需了解详细信息,请参阅多窗口生命周期。

        请在清单中将 

android:supportsPictureInPicture

 设置为 true。(从 Android O 开始,如果您打算在 Android TV 或其他 Android 设备上支持 PIP 模式,则无需将 

android:resizeableActivity

 设置为 true;只有在您的 Activity 支持其他多窗口模式时,才需要设置 

android:resizeableActivity

。)。

可下载字体Downloadable fonts

Android O 和 Android 支持库 26 允许您从提供程序应用请求字体。fonts in xml 功能。

XML 中的字体

        Android O 推出一项新功能,即 XML 中的字体,允许您使用字体作为资源。在运行 API 版本 14 及更高版本的设备中,支持库 26 对此功能提供完全支持。

视图焦点

        可点击的 

View

 对象现在默认也可以成为焦点。如果您希望 

View

 对象可点击但不可成为焦点,请在包含 

View

 的布局 XML 文件中将 

android:focusable

属性设置为 

false

自动调整 TextView 的大小

        Android O 允许您根据 TextView 的大小自动设置文本展开或收缩的大小。

自适应图标  Adaptive Icons

        Android O 引入自适应启动器图标。自适应图标支持视觉效果,可在不同设备型号上显示为各种不同的形状。

Android 8.0新特性

颜色管理

        图像应用的 Android 开发者现在可以利用支持广色域彩色显示的新设备。要显示广色域图像,应用需要在其清单(每个操作组件)中启用一个标志,并加载具有嵌入的广域彩色配置文件(AdobeRGB、Pro Photo RGB、DCI-P3 等)的位图。

固定快捷方式和小部件   Pinning shortcuts

        Android O 引入了快捷方式和微件的应用内固定功能。在您的应用中,您可以根据用户权限为支持的启动器创建固定的快捷方式和小部件。

        如需了解详细信息,请参阅固定快捷方式和微件预览功能指南。

Android 8.0新特性

多显示器支持 Multi-display support

        从 Android O 开始,此平台为多显示器提供增强的支持。如果 Activity 支持多窗口模式,并且在具有多显示器的设备上运行,则用户可以将 Activity 从一个显示器移动到另一个显示器。当应用启动 Activity 时,此应用可指定 Activity 应在哪个显示器上运行。

如果你是应用开发者,开到这里,就OK了。如果是系统开发者,或者想了解更多,可以继续:

新的 StrictMode 检测程序

Android O 添加了三个新的 StrictMode 检测程序,帮助识别应用可能出现的错误:

  • detectUnbufferedIo()

     将检测您的应用何时读取或写入未缓冲的数据,这可能极大影响性能。
  • detectContentUriWithoutPermission()

     将检测您的应用在其外部启动 Activity 时何时意外忘记向其他应用授予权限。
  • detectUntaggedSockets()

     将检测您的应用何时使用网络流量,而不使用 

    setThreadStatsTag(int)

     将流量标记用于调试目的。

缓存数据

        Android O 优化了缓存数据的导航和行为。现在,每个应用均获得一定的磁盘空间配额,用于存储 

getCacheQuotaBytes(UUID)

 返回的缓存数据。

        当系统需要释放磁盘空间时,将开始从超过配额最多的应用中删除缓存文件。

内容刷新请求

        现在,

ContentProvider

 和 

ContentResolver

 类均包含 

refresh()

 函数,这样,客户端可以更轻松地知道所请求的信息是否为最新信息。

JobScheduler 改进

        Android O 引入了对 

JobScheduler

 的多项改进。由于您通常可以使用计划作业替代现在受限的后台服务或隐式广播接收器,这些改进可以让您的应用更轻松地符合新的后台执行限制。

findViewById() 签名变更

现在,

findViewById()

 函数的全部实例均返回 

<T extends View> T

,而不是 

View

权限

        在 Android O 之前,如果应用在运行时请求权限并且被授予该权限,系统会错误地将属于同一权限组并且在清单中注册的其他权限也一起授予应用。

        对于针对 Android O 的应用,此行为已被纠正。系统只会授予应用明确请求的权限。然而,一旦用户为应用授予某个权限,则所有后续对该权限组中权限的请求都将被自动批准。

       Android O 引入了多个与电话有关的新权限:

  ANSWER_PHONE_CALLS

 (新的权限)允许您的应用通过编程方式接听呼入电话。要在您的应用中处理呼入电话,您可以使用 

acceptRingingCall()

 函数。

 READ_PHONE_NUMBERS

 (新的权限)权限允许您的应用读取设备中存储的电话号码。

这些权限均被划分为危险类别,属于 

PHONE

 权限组。

        安装Apk时,除了需要用apk文件的共享uri外,还需要加入安装申请权限,REQUEST_INSTALL_PACKAGES,系统会自动询问用户完成授权,当然也可以使用 canRequestPackageInstalls()查询是否有此权限。如果没有,使用 Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES这个action来引导到位置来源应用安装。

更新的 Java 支持

Android O 添加了对更多 OpenJDK Java API 的支持:

  • OpenJDK 8 中的 

    java.time

  • OpenJDK 7 中的 

    java.nio.file

     和 

    java.lang.invoke

记录未捕获的异常

        如果某个应用安装的 

Thread.UncaughtExceptionHandler

 未移交给默认的 

Thread.UncaughtExceptionHandler

,则当出现未捕获的异常时,系统不会终止应用。从 Android O 开始,在此情况下系统将记录异常堆栈跟踪情况;在之前的平台版本中,系统不会记录异常堆栈跟踪情况。

提醒窗口

使用 

SYSTEM_ALERT_WINDOW

 权限的应用无法再使用以下窗口类型来在其他应用和系统窗口上方显示提醒窗口:

  • TYPE_PHONE

  • TYPE_PRIORITY_PHONE

  • TYPE_SYSTEM_ALERT

  • TYPE_SYSTEM_OVERLAY

  • TYPE_SYSTEM_ERROR

相反,应用必须使用名为 

TYPE_APPLICATION_OVERLAY

 的新窗口类型。

ANDROID_ID

 的值现在将根据应用签署密钥和用户确定作用域。应用签署密钥、用户和设备的每个组合都具有唯一的 

ANDROID_ID

 值。

智能文本选择,

无障碍功能按钮,

独立的音量调整,

指纹手势,Pointer capture

创建一个View,用来监听用户的手势。

提示文本,

连续的手势分派,

新的帐号访问和 Discovery API,.

我以前曾经把jdk1.5-1.8的新特性整理处理。现在我觉着,可以把Android8.0-4.4之前主要几个整理一下。感觉,挺多人喜欢看这些东西。

*************************************红色警戒(这部分其实可以放一个(行为兼容注意),不同于新特性)**************

Cased by: java.lang.illegalStateException: Only fullscreen opaque activities can request orientation.

1),这里插入说一下android8.0 Api的一个改动,发现这个改动在 Google 文档里面居然没有:

Only fullscreen opaque activites can request orentation ... 引发的  illegalStateException.

     在android8.0中,如果手动置为竖屏,则不允许window使用透明的背景颜色。这个需要注意,解决办法,有很多途径,通过xml version适配,sdk if else,等,都可以。

2),在应用安装的时候,除了使用 fileUri provider 提供apk位置外。还需要加入安装包的权限。

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
           

3),权限的申请还有一点,就是android 8开始,权限赋予不按照 申请一个权限 就给予 一个权限组的所有权限,而是请求什么权限,就给什么。。在 Read_external,Write_external时需要注意。

https://blog.csdn.net/u011216417/article/details/69916964

**************************************警戒解除***********************

静态广播无法接收:

        android8.0,引入了新的广播限制,使大多数静态注册广播不再可以接收到广播,应用应该使用动态的代码注册,来完成需要的接收触发。

XML 中的字体

Android O 推出一项新功能,即 XML 中的字体,允许您使用字体作为资源。在运行 API 版本 14 及更高版本的设备中,支持库 26 对此功能提供完全支持。