Android8.0适配那点事(二)
小伙伴们,咱们今天咱继续对Android8.0的适配进行分解,今天将针对启动页,版本适配和系统限制等进行“啃食”
猛戳这里查看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的过程中遇到了哪些问题,欢迎留言,共同探讨并解决。如文中有误,请留言指出.
Android8.0适配那点事(二)的更多相关文章
- Android8.0适配那点事(一)
最近有小伙伴说,7.0适配整了一波,现在又要来适配8.0,真是一波未平一波又起 但是作为开发者来说,学无止境,不跟上时代的步伐,肯定会被时代所淘汰... 话说Android P已经在路上了,你准备好了 ...
- Android8.0运行时权限策略变化和适配方案
版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.comAndroid8.0也就是Android O即将要发布了,有很多新特性,目前我们可以通过AndroidS ...
- fir.im Weekly - 关于 Log Guru 开源、Xcode 探索和 Android7.0 适配
本期 fir.im Weekly 整理了最近的一些技术分享,包括关于 Log Guru 开源.Xcode 探索. Android7.0 适配等等 iOS/Android 相关的工具.源码分享和技术文章 ...
- Android深入四大组件(四)Android8.0 根Activity启动过程(前篇)
前言 在几个月前我写了Android深入四大组件(一)应用程序启动过程(前篇)和Android深入四大组件(一)应用程序启动过程(后篇)这两篇文章,它们都是基于Android 7.0,当我开始阅读An ...
- Android:Mstar Android8.0平台音量控制流程
一.Speaker 音量.静音流程分析 java层音量设置首先调用到的是AudioManager.java中的方法,在这里有两种方法可以设置音量 setStreamVolume 和 adjustStr ...
- [转]Android 应用自动更新及6.0,7.0,8.0适配安装
原贴:https://www.jianshu.com/p/ea42040c7ace 原贴:https://www.jianshu.com/p/ea42040c7ace 原贴:https://www.j ...
- android 8.0 适配(总结)
android 8.0 对应的 sdk 版本 26 1. 通知栏 Android 8.0 引入了通知渠道,其允许您为要显示的每种通知类型创建用户可自定义的渠道.用户界面将通知渠道称之为通知类别. 针 ...
- Android5.0和Android6.0适配
gradle配置项 compileSdkVersion 用哪个 Android SDK 版本编译你的应用.因此我们强烈推荐总是使用最新的 SDK 进行编译.在现有代码上使用新的编译检查可以获得很多好处 ...
- Android8.0 后台服务保活的一种思路
原文地址:Android8.0 后台服务保活的一种思路 | Stars-One的杂货小窝 项目中有个MQ服务,需要一直连着,接收到消息会发送语音,且手机要在锁屏也要实现此功能 目前是使用广播机制实现, ...
随机推荐
- PHP常见缓存机制
PHP常用的几种缓存机制_PHP教程 普遍缓存技术 数据缓存:这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据, ...
- C#二进制位算 权限
关于权限管理,之前所做的都是一个权限对应一条数据,比方A页面有增删改查四个权限,那么用户在权限管理表中相对应AA页面有四条记录.后来改用二进制运算,发现省事很多. 首先说下位运算 熟悉一下操作符,懒得 ...
- (转)Mysql占用过高CPU时的优化手段
Mysql占用CPU过高的时候,该从哪些方面下手进行优化?占用CPU过高,可以做如下考虑:1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processli ...
- wap 往下拉自动加载更多数据
var stop=true; $(window).scroll(function(){ totalheight = parseFloat($(window).height()) + parseFloa ...
- django+mysql+html简单demo之 views+html
#coding=utf-8 from __future__ import unicode_literals from django.shortcuts import render,render_to_ ...
- JavaScript设计模式-16.装饰者模式(上)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- css定位问题的记录
postion:relative是子块级元素面向父级元素的相对定位,定位关键字使用left/right/top/bottom.兄弟块元素之间相对进行定位,但是position移动后,原位置依然保留.而 ...
- HDU 5444 Elven Postman (2015 ACM/ICPC Asia Regional Changchun Online)
Elven Postman Elves are very peculiar creatures. As we all know, they can live for a very long time ...
- 入门系列之在Ubuntu上安装Drone持续集成环境
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由小铁匠米兰的v 发表于云+社区专栏 介绍 Drone是一个流行的持续集成和交付平台.它集成了许多流行的版本控制存储库服务,如GitHu ...
- JVM内存模型和垃圾回收
Java开发有个很基础的问题,虽然我们平时接触的不多,但是了解它却成为Java开发的必备基础——这就是JVM.在C++中我们需要手动申请内存然后释放内存,否则就会出现对象已经不再使用内存却仍被占用的情 ...