前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android 各版本特性

Android 各版本特性

作者头像
Yif
发布2019-12-26 15:10:07
1.3K0
发布2019-12-26 15:10:07
举报
文章被收录于专栏:Android 进阶Android 进阶
undefined
undefined

Android 5.0特性

  • MaterialDesign设计风格
  • 支持多种设备
  • 支持64位ART虚拟机

5.0中使用了recyclerview代替了listview,它具有高度解耦,可以自定义样式,提供ItemAnimator,ItemDecoration,LayoutLinearLayout实现丰富多样的效果,但也有缺点,比如需要自定义列表分割线,列表点击事件也需要自己实现,列表分隔线通过继承recyclerview的ItemDecoration方法

Android 6.0特性

  • 大量漂亮流畅的动画
  • 支持快速充电的切换
  • 支持文件夹拖拽应用
  • 相机新增专业模式

Android 7.0特性

  • 分屏多任务
  • 增强的Java8语言模式
  • 夜间模式

Android 8.0特性:

  1. 通知渠道 — Notification Channels 通知渠道是由应用自行定义的通知内容类别,借助渠道,开发者可以让用户对不同种类的通知进行精细控制,用户可以单独拦截或更改每个渠道的行为,而不是统一管理应用的所有通知。 创建通知渠道的步骤:
    • 创建 NotificationChannel 对象,并设置应用内唯一的通知 ID。
    • 配置通知渠道的属性,比如提示声音等。
    • NotificationManager 中注册通知渠道对象
  2. 画中画模式 — PIP Android O 现已支持 Activity 的画中画模式。PIP 是一种多窗口显示模式,多用于视频播放,即你可以一边发微信一边看视频。
    1. 关于生命周期 PIP模式不会改变 Activity 的生命周期。在指定时间只有最近与用户交互过的 Activity 为活动状态。 该 Activity 将被视为顶级 Activity。 所有其他 Activity 虽然可见,但均处于暂停状态。当一个 Activity 处于 PIP 模式时,其实它是出在暂停状态,但其内容会继续展示。
    2. API变更 在 Android O 中新增 PictureInPictureArgs 对象来指明你的 Activity 在 PIP 模式中的属性,比如长宽比等。 Android O 还新增了以下方法来支持 PIP。
      • (PictureInPictureArgs args):将Activity置于 PIP 模式之下。
      • Activity.setPictureInPictureArgs():用于更新 Activity 在 PIP 模式下的设置。如果 Activity 正处于 PIP 模式之下,那么更改的属性将立即生效。
  3. 自适应图标 — Adaptive Icons Android O 支持创建自适应图标,系统可以基于设备选择的蒙版将这些图标显示为不同形状。系统还将实现与图标的自动交互,并在启动器、快捷方式、设置、共享对话框以及概览屏幕中使用它们。 在以前的 Android 版本中,图标大小定义为 48 x 48 dp。现在你必须按照以下的规范定义你的图层大小:
    • 两张图层大小都必须为 108 x 108 dp。
    • 图层中心 72 x 72 dp 范围为可视范围。
    • 系统会保留四周外的 36dp 范围用于生成有趣的视觉效果(如视差和跳动)。
  4. 固定快捷方式和小部件 — Pinning shortcuts Pinning shortcuts 是一个比 APP shortcuts 更小的快捷方式,放置于桌面上,用于更快速的打开某一 APP 的某单一任务。Pinning shortcuts 在桌面上可呈现不同的图标显示。
    • 首先使用 isRequestPinShortcutSupported() 方法校验手机是否支持启动这种快捷方式。
    • 创建 ShortcutInfo 对象。
    • 用 `requestPinShortcut() 方法应用 Pinning shortcuts。你可以通过 PendingIntent 来通知你的 shortcuts 有没有创建成功

Android P 新特性

  1. 室内WIFi定位
  2. “刘海”屏幕支持
  3. 通知 从Android 7.0开始,就优化了Android通知栏的体验。Android P还增加了许多对通知的支持,在P当中,又新增了下述功能:
    1. 支持图像:Android P现在在手机上的消息通知中显示图像。您可以在消息上使用setData()来显示图像。
    2. 会话参与者的简化支持:新的Notification.Person类用于标记参与聊天的人,包括他们的头像和URI。还有其他的一些API,现在都用Person类作为标志参数而不是CharSequence。 Notification.Builder builder = new Notification.Builder(this, "a"); //新的聊天对象 Notification.Person p = new Notification.Person(); //在MessagingStyle中用Person代替了以往的CharSequence Notification.MessagingStyle messageStyle = new Notification.MessagingStyle(p); Notification.MessagingStyle.Message message = new Notification.MessagingStyle.Message("aaa", 100, p); //可以显示图像了 message.setData(); messageStyle.addMessage(message); builder.setStyle(messageStyle); Notification notification = builder.build();
    3. 将回复另存为草稿:当用户无意中关闭消息通知时,您的应用可以检索系统发送EXTRA_REMOTE_INPUT_DRAFT来获取一些信息。 确定对话是否是群组对话:您可以使用setGroupConversation()来有目的地将对话标识为群组对话或非群组对话。 为意图设置语义动作:setSemanticAction()方法允许您为某个动作提供语义含义,如标记为读取,删除,回复等。
  4. 通道设置、广播以及免打扰 Android O引入了Notification Channels,可让您为要显示的每种类型的通知创建一个用户可自定义的频道。 Android P通过以下更改简化了通知渠道设置:
    • 阻止渠道:用户现在可以在应用的通知设置中阻止整组渠道。您可以使用isBlocked()方法来确定某个组何时被阻止,不对被阻止的组发送消息。 此外,应用可以使用新的getNotificationChannelGroup()方法查询当前渠道设置。
    • 新的广播类型:Android系统现在在通知频道和频道组的阻塞状态发生变化时发送广播。拥有被阻止的频道或群组的应用可以监听这些Intent并作出相应的反应。
    • 新的免打扰优先级类别:NotificationManager.Policy有两个新的策略常量:PRIORITY_CATEGORY_ALARMS(按优先级排列)和PRIORITY_CATEGORY_MEDIA_SYSTEM_OTHER(优先排列媒体,系统和游戏声音)
  5. 新的图片解码 Android P新增了ImageDecoder类,为解码图像提供了一种更优的方法。由此可以用ImageDecoder来替换BitmapFactoryBitmapFactory.Options。更多使用方法请参见官方API。 String filePath = "test"; File file = new File(filePath); ImageDecoder.Source source = ImageDecoder.createSource(file); ImageDecoder.decodeBitmap(source); ImageDecoder.decodeDrawable(source, (imageDecoder, imageInfo, source1) -> { //裁剪图像 imageDecoder.setCrop(); //调整大小 imageDecoder.setResize(); }); BitmapFactory.decodeFile(filePath);
  6. 动画 Android P引入了一个新的AnimatedImageDrawable类来绘制和显示GIF和WebP动画图像。 AnimatedImageDrawableAnimatedVectorDrawable类似,因为AnimatedImageDrawable动画也是基于RenderThread工作的。RenderThread本身在内部使用工作线程进行解码,因此解码不会干扰RenderThread。 这种实现允许您的应用拥有动画图像,而无需管理其更新或干扰应用的UI线程。 Drawable d = ImageDecoder.decodeDrawable(...); if (d instanceof AnimatedImageDrawable) { // Prior to start(), the first frame is displayed ((AnimatedImageDrawable) d).start();   }
  7. Framework
    • AMS 从Android P开始,只有当Intent flag中指定了FLAG_ACTIVITY_NEW_TASK,才允许在非Activity场景启动Activity。 APP必须拥有FOREGROUND_SERVICE权限,才允许使用前台服务,否则会抛出异常。 目前很多APP开发者们对Android O的一些后台限制行为不太了解这些变更,遇到问题可能误以为系统问题,所以这里说到这顺便提一下关于Android O对后台行为的一些管控。
    • 后台服务(Background Service)限制
      • 当进程处于后台1分钟后会进入idle状态,系统停止其后台服务,也就意味着应用处于后台必须1分钟内处理完收尾工作,不允许在后台长时间监控系统,从而节省功耗;对于应用后台执行用户不可感知的操作,官方推荐使用JobScheduler
      • 后台进程不允许通过startService方式启动服务,否则当targetSdk>=26的情况下会抛出IllegalStateException
      • 对前台服务(Foreground Service)不会有这个限制,因为前台服务都会挂一个前台通知对用户来说是可见的。Android O新增startForegroundService(),用于启动前台服务,但有一个限制条件就是应用必须服务启动后5秒之内调用startForeground(),否则会抛出ANR
    • 广播(Broadcast)限制:
      • 应用无法使用其清单注册的大部分隐式广播,但部分隐式广播是被允许的, 比如BOOT_COMPLETED, LOCALE_CHANGED等。这样做是为了省电和性能,防止大量APP通过监听各种广播来拉起自己。
      • 清单注册的显式广播和动态注册的隐式广播依然可以正常工作。
  • PMS 重构Package Manger,减少核心服务的代码复杂度,将permission,intent等代码移到单独的类, 将user management,dex,shortcuts等不相关代码移到子包;尽可能操作本地数据,避免加锁;同时增加单元测试。 PMS在Android O主要改动是优化启动时间,将操作尽可能并行化执行,在Android P上主要改动是扫描过程scanPackageOnly(), 下一步提取更多的子组件和类,比如Intent resolution, package verification, dexopt等,减少修改对象成员的方法。
  • WMS 在Android O上,结构化窗口对象模型和容器层次结构, 提高CTS覆盖率并引入单元测试,SurfaceFlinger中引入层级结构用于SurfaceView,引入Task快照。在Android P上,继续提升创建对象模型,同步APP Transitions,WindowScope工具, 过度使用Stack ID, Stack管理着类似的task和activity,特定的窗口模式,例如HOME_STACK_ID,FULLSCREEN_STACK_ID,FREEFORM_STACK_ID,这就导致同一个Stack的task和activity不允许有不同的窗口模式。新的方案允许有多个WindowContainers,窗口模式不再受限于Stack ID。 采用同步的APP Transitions, animations的过程可不再需要WMS大锁。另外Transitions,WindowScope工具是一个类似于systrace的工具,可用于方便查看WindowManager和SurfaceFlinger,仅在userdebug版本开启,对性能影响较小。

Android Q 新特性

  1. 隐私保护升级,给予用户更多的地理位置控制,用户可以让APP在使用期间获取地理位置,不使用无法获取地理位置信息
  2. 用户互动新方式:适配折叠屏及新型屏幕
  3. 网络连接:扩展了网络连接堆栈,并添加一些新的API,可以启用高性能低延迟的自适应WiFi模式
  4. 摄像头、媒体及图像:新的图片格式,动态深度;新的音频及视频解码器
  5. 强化了Android 基础:又一次提升了ART性能 例如:
    • 改进了 Android Q 中的 Zygote进程,提早开启应用进程并将其移至安全容器中,如此一来,应用便做好了随时启动的准备
    • 在应用的系统启动映像中加入了更多信息,例如类,并借助线程管理加快映像文件的加载速度
  6. 增强了应用安全,拓展对人脸识别等被动手段支持。
  7. 兼容了公开API
  8. 现代化Android:从下半年开始,Google Play 将要求所有新应用及更新将 targetSdkVersion 设置为 28 (Android 9 Pie)。除此以外,当用户首次运行 API 低级低于 23 (Android Marshmallow及Android 6.0) 的应用时,会受到来自 Android Q 的警告信息。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年7月30日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Android 5.0特性
  • Android 6.0特性
  • Android 7.0特性
  • Android 8.0特性:
  • Android P 新特性
  • Android Q 新特性
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档