小伙伴们,咱们今天咱继续对Android8.0的适配进行分解,今天将针对启动页,版本适配和系统限制等进行“啃食”

1、启动页适配

近日,我无意中发现应用在8.0系统上面启动页崩溃,赶紧去找BUG,运行后发现如下异常:

翻译后意思是:只有全屏不透明的activity才可以设置方向;

解决方案如下:

1.1、如果不考虑配置屏幕方向的话,直接将android:screenOrientation="portrait" 去掉即可;

1.2、如果既要固定屏幕方向,又解决启动过慢导致的白(黑)屏问题,那么可以找到你设置透明的Activity,然后在他的theme中将android:windowIsTranslucent改为false,再加入<item name="android:windowDisablePreview">true</item>;

1.3、参考Google给出的解决方案:不要禁用预览窗口,而要遵循常见的 Material Design模式。您可以使用活动的 windowBackground主题属性为开始活动提供简单的自定义绘图.

2、8.0版本安装适配

android 8.0系统更新之后,未知应用安装权限的开关被除掉,取而代之的是未知来源应用的管理列表,需要用户给予允许app安装未知来源应用的权限;

2.1、添加权限

<!--装未知来源应用的权限-->

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

2.2、然后在用户点击更新时判断是否开启了该应用的“允许安装未知来源”的权限,没有的话,就引导用户去开启该应用的“允许安装未知来源”的权限

注意:此处如果自己实现版本更新,需配合通知渠道,进行版本下载进度显示

3、运行时权限策略变化

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

同组权限一起申请:

8.0中引入了多个与电话有关的新权限:

  • ANSWER_PHONE_CALLS 允许您的应用通过编程方式接听呼入电话。要在您的应用中处理呼入电话,您可以使用 acceptRingingCall() 函数。

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

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

1、后台执行限制

1.1、后台服务限制:处于空闲状态时,应用可以使用的后台服务存在限制。 这些限制不适用于前台服务,因为前台服务更容易引起用户注意;

1.2、广播限制:除了有限的例外情况,应用无法使用清单注册隐式广播。 它们仍然可以在运行时注册这些广播,并且可以使用清单注册专门针对它们的显式广播。

注意:默认情况下,这些限制仅适用于针对 O 的应用。 不过,用户可以从 Settings 屏幕为任意应用启用这些限制,即使应用并不是以 O 为目标平台。

2、后台服务限制

系统可以区分 前台 和 后台 应用。 (用于服务限制目的的后台定义与内存管理使用的定义不同;一个应用按照内存管理的定义可能处于后台,但按照能够启动服务的定义又处于前台。)如果满足以下任意条件,应用将被视为处于前台:

  • 具有可见 Activity(不管该 Activity 已启动还是已暂停)。

  • 具有前台服务。

  • 另一个前台应用已关联到该应用(不管是通过绑定到其中一个服务,还是通过使用其中一个内容提供程序)。 例如,如果另一个应用绑定到该应用的服务,那么该应用处于前台:

    • IME

    • 壁纸服务

    • 通知侦听器

    • 语音或文本服务

如果以上条件均不满足,应用将被视为处于后台。

后台服务会被kill掉,官方推荐可使用AlarmManager、SyncAdapter、JobScheduler代替后台服务。

3、广播限制

如果应用注册为接收广播,则在每次发送广播时,应用的接收器都会消耗资源,在7.0中对广播施加了一些限制,8.0 让这些限制更为严格:

  • 针对 Android 8.0 的应用无法继续在其清单中为隐式广播注册广播接收器;

  • 应用可以继续在它们的清单中注册显式广播;

  • 应用可以在运行时使用 Context.registerReceiver() 为任意广播(不管是隐式还是显式)注册接收器;

  • 需要签名权限的广播不受此限制所限,因为这些广播只会发送到使用相同证书签名的应用,而不是发送到设备上的所有应用。

4、后台位置限制

  • Android 8.0 都会对后台应用检索用户当前位置的频率进行限制(会出现后台应用定位收不到定位信息);

(注:以上内容引自Google中国开发者网站:https://developer.android.google.cn)

新系统在手,还需多多了解其中的变化,以我们自身的能力来解决实际开发过程中的问题,各位小伙伴,你们的应用在适配8.0的过程中遇到了哪些问题,欢迎留言,共同探讨并解决。如文中有误,请留言指出.

转载于:https://blog.51cto.com/12512729/2136802

Android8.0适配那点事(二)相关推荐

  1. Android 8.0 学习(14)---Android8.0适配分析

    公司项目Android8.0适配分析 1. 官方推荐的兼容测试方式  2. Android8.0行为变更说明  Android 8.0 行为变更包括两个部分:针对所有 API 级别的应用和针对 And ...

  2. android 跳转动画黑屏,Android8.0 适配解决页面跳转过程出现短暂黑屏的问题

    小菜在适配 Android8.0 过程中,遇到很多问题,有很多很常见的问题,今天来整理一下页面跳转时黑屏的问题. 问题猜测 猜测一: 显示 Activity 页面之前会优先开启一个 Starting ...

  3. Android8.0前后Camera架构对比(二十三)

    Android 的相机硬件抽象层 (HAL) 可将Camera2中较高层级的相机框架 API 连接到底层的相机驱动程序和硬件.相机子系统包括相机管道组件的实现,而相机 HAL 可提供用于实现您的这些组 ...

  4. Android8.0适配方案

    准备工作 将我们项目中的targetSdkVersion改为 26(8.0) 或者 27(8.1) 1运行时权限 首先引用官方的原文. https://developer.android.google ...

  5. Android8.0适配之一应用图标适配

    1.适配条件 target在26以下,不用做适配. 如果设置target=26及以上,在8.0不做适配,就会显示成一个圆圈包围着logo,不好看. 2.Android 8.0应用图标适配原理: 应用图 ...

  6. Android8.0适配-Only fullscreen opaque activities can request orientation

    背景 2018年7月18日上午,电信终端产业协会(TAF)发布<移动应用软件高API等级预置与分发自律公约>(以下简称<公约>).OPPO.华为.百度.360.阿里.小米.VI ...

  7. android 8.0后台定位,Android8.0适配前台定位服务service的示例代码

    从Android 8.0开始系统为实现降低功耗,对后台应用获取用户位置信息频率进行了限制,每小时只允许更新几次位置信息,详细信息请参考官方说明.按照官方指引,如果要提高位置更新频率,需要后台应用提供一 ...

  8. 荣耀8 android8.0 2018,荣耀手机EMUI8.0+ Android8.0最新适配计划

    [官方活动] 荣耀手机EMUI8.0+ Android8.0最新适配计划 3941603381 电梯直达 荣小耀同学 天下无双 发表于 2018-3-20 10:06:16 来自:浏览器 最新回复 2 ...

  9. android7虚拟定位,Android8.0还早 EMUI助推Android7.0普及

    5月17日至19日,谷歌2017年开发者大会在加州谷歌总部所在地举办.本次会议当中,最重要产品之一即新一代Android O操作系统(也就是我们所说Android 8.0)成为最大的亮点.最新发布的A ...

最新文章

  1. 利用自己的电脑设置web服务器建网站_win7系统篇,win7系统利用iis搭建web服务器实现信息浏览资源共享的操作方法...
  2. 2.2.5 Adam优化算法
  3. java中的hashcode方法作用以及内存泄漏问题
  4. 【机器视觉】 dev_get_exception_data算子
  5. AcWing 253. 普通平衡树
  6. React开发(272):try...catch..捕获
  7. word2016能识别linux换行符,word文章中的换行符如何批量替换为回车符
  8. ssis 创建ssisdb_使用SSIS创建备份
  9. lua io.read()
  10. 看不到日志_迷之 crontab 异常:不运行、不报错、无日志?
  11. 脑电伪迹降噪方法整理
  12. 基于Arduino的超声波悬浮
  13. 优柔但不寡断、柔弱绝不可欺、善良却不可骗、宽容而非懦弱
  14. Ubuntu16.04调整屏幕分辨率至1920*1080
  15. sql PK FK 区别
  16. android dex文件过多,意外的最高级别异常:com.android.dex.DexException:定义了多个dex文件...
  17. 原语科技宣布完成千万级天使+轮融资,致力于打造隐私计算标准化产品
  18. 长沙尚学堂python培训机构
  19. 从零开始学Python编程之魔法方法
  20. CES归来---话说AR眼镜

热门文章

  1. Cadence 建立封装:多个引脚于芯片内部连接的封装建立方式
  2. 第四百三十六天 how can I 坚持
  3. HTML5/CSS3/JavaScript
  4. Android禁止横屏竖屏切换
  5. glReadPixels的用法和说明
  6. 机器人产业:借人工智能突破“拐点”
  7. Unity的对象复用
  8. 【译】Go语言声明语法
  9. codeforces-73C. LionAge II
  10. 想要快速获客?送你 2 个小程序互推方法