个人简历
Android-性能优化的基本思路
性能优化的思路
Android-2023-10-23权限申请的变更
Android-权限申请的变更
1 | Android 13 代号「提拉米苏(Tiramisu)」 |
Android-13 对比 Android-12的变化,
更严格的通知权限
为什么要限制前台服务?
App通过通知系统来告知用户,让应用得以获取用户的注意焦点来提升运行优先级,并最终得以完成任务。在我看来这是很聪明的做法,如今这样的机制也已经成为应用确保任务完成的重要手段。
所以将二者结合起来可以得出的另一种事实却是,只要应用保证通知正常显示,它的前台服务就能持续保持运行。只要规律存在漏洞,就会被有心人利用,对用户的隐私会造成隐患。
针对这类情况,必要的检测和停用手段是必须的。Android 13 这次引入的前台服务管理器终于补上了这一环。
1 | 应用会在首次运行时向弹出请求窗口向用户请求许可,然后由用户决定是拒绝还是许可。但在 Android 12 或更早的系统版本中,通知权限则是一个安装时默认授予权限,具体的行为也是可以由应用开发者自己来定义的 |
不过从上面的介绍中也不难看出,前台服务主要有两大特点:
1.即使用户停止与应用的交互,仍能继续运行
2.执行过程中必须显示通知
如何检测和停用
Android 13 这次引入的 FGS前台任务管理器
防范管控的第一步,自然是先将所有前台服务的应用罗列出来。Android 13 的快速开关面板在重新布局的同时,底部也多出了一栏「前台服务管理器」,点击展开后即可看到当前正在活跃的应用,点击对应的「停止」按钮就能一键让应用停止运行,可谓是相当「快准狠」的管理方式。
Android 13 为 App 的通知新增了运行时权限「POST_NOTIFICATIONS」,用户能够自由的选择通知的时间、位置,甚至是设置为「不用时移除权限」。这种限制类似于对于位置、话筒、相机、应用列表的权限设置。
其次 Android 系统也会帮助用户对前台服务进行监督,具体的机制是,在以 24 小时为单位的时间长度内,如果某应用的前台服务运行超过 20 小时,系统就会发送通知告诉「XX 已经长时间后台运行,点击查看详情」。这时点击通知也会跳转到上述前台服务任务管理器当中。
根据 Android 13 现阶段的设计,针对同一应用这样的警告通知不会在 30 天内重复出现。另外也不是所有应用都会出现在前台服务管理器中,系统级应用、紧急安全相关应用不会出现在这个列表中;部分应用会出现在这个列表中但没有「停止」按钮,比如激活设备所有方的应用、拨号应用等。
与「划卡强杀」的区别
在关于前台服务管理器的相关文档中,我们也得以第一次看到现代 Android 对「多任务界面上划应用卡片」这个行为的定义,以及它和前台服务管理器的实际区别
绿色守护和部分厂商的「划卡强杀」其实更接近最右侧的 Force stop,也就是强行停止。现在进入到应用管理的详情页也依旧能够看到这个按钮,被强行停止的应用会停止一切活动,一般来说不能再自行启动,只能用户手动或其余应用拉起才能恢复运行。
前台服务管理器的停止按钮除了会暂停前台服务,也会将应用从 RAM 中驱离。需要注意的是,此时应用只是停止了运行,并不会从多任务窗口中移除,这一考虑或许是为了方便用户快速恢复任务,同时减少系统资源消耗。
严格控电-续航
Android 13的目标之一是通过全新的、更严格的电池控制方案,来优化熄屏后App的电源消耗,从而最大化设备体验
Android-13对文件权限的改进
尽管 Android 11 引入了很多人心心念念的分区存储机制来改善私有目录滥用的乱象,但部分国产应用很快又学会了将用户和设备标识文件伪装成图片,然后将 /Pictures 这类公有目录变成新的用户隐私数据交换中心的新方案。
针对需要访问文件权限的做法,Android 13 这次将媒体文件权限进一步细分。已经适配 Android 11的应用(目标 API 等级 33)在 Android 13 中能够获取到的文件读写权限被分成了音频2、视频3和图片4,在实际使用过程中,应用可以根据实际情况将这三种权限灵活组合起来。
旧版本
Android 操作系统版本的更新通常伴随着对应用程序权限系统的调整和改变。这些变更旨在增强用户的隐私保护和提供更细粒度的权限控制。以下是一些 Android 权限系统的变更和改进的常见示例:
运行时权限控制:从 Android 6.0(Marshmallow)开始,Android 引入了运行时权限控制,允许用户在应用程序安装后,根据需要授予或拒绝应用程序特定权限的访问权,如访问相机、位置、联系人等。
危险权限:Android 权限被分为普通权限和危险权限。危险权限需要用户明确同意,而普通权限在应用安装时自动授予。在较新的 Android 版本中,某些危险权限的使用受到更严格的控制。
存储权限:在 Android 10 及更高版本中,存储权限发生了重大变化。应用程序需要逐个请求访问外部存储的权限,并在其清单文件中声明 MANAGE_EXTERNAL_STORAGE权限以访问全部存储。这是为了增强隐私保护和减少对外部存储的滥用。
一次性权限:在 Android 11 及更高版本中,用户可以授予应用程序一次性访问位置、麦克风和相机等权限,而不是永久性地授予权限。
位置权限:在较新的 Android 版本中,位置权限的访问变得更加严格,用户可以选择只允许应用程序在使用时访问位置数据,而不是一直允许。
通知权限:在 Android 版本中,通知权限系统也有所改进,用户可以更好地控制和管理应用程序的通知。
访问后台位置:在 Android 11 及更高版本中,访问后台位置数据的权限更加受到限制,应用程序需要满足更高的要求才能访问后台位置数据。
请注意,每个 Android 版本的权限系统可能有所不同,具体的变化和改进可能会因版本而异。要了解特定 Android 版本的权限变更,请查阅相关的 Android 开发者文档或官方发布说明。
Welcome-to-C++
Symbols count in article: 649 Reading time ≈ 1 mins.
code ==> compiler ==> produces mechine code for your target platform(为目标平台生成机器代码)
mechine code then contains the actual instructions that the target CPU can execute。(机器代码包含目标CPU可以执行的指令)
所以使用C++是可以单独控制目标CPU每条指令。
How C++ Works
1 | #include <iostream> |
1 | #include <iostream> |
C++中的#符号通常被用于预处理器指令,这些指令在编译实际的C++代码之前被执行
#include <该文件的所有内容> ==
include will look for a file and will simply take the entire contents of the iostream file and paste it into our main.cpp.
Once preprocessing is finished,our file will be complied,
Linux-进程管理
进程管理概述
Binder-老生常谈
Binder起源
Diffusion-如何写好一份提示词
Symbols count in article: 184 Reading time ≈ 1 mins.
Java-泛型
Java- 泛型
Java-碎碎念
Java- 平时记录
2023-plan
Symbols count in article: 153 Reading time ≈ 1 mins.
1 | [ |
在正式启动之前,一定要想清楚为什么做和怎么做的问题,且这些问题的答案一定要结合自身的实际情况获得,而不是模仿他人。