- 博客(22)
- 资源 (2)
- 收藏
- 关注
原创 显示子系统之:Choreographer
目录1. 关键成员变量和方法1.1 关键成员变量1.1.1 CallBack Type及其演进历程1.1.2 mCallbackQueues1.2 关键函数1.2.1 构造函数1.2.3 doCallbacks2. 关键流程2.1 CALLBACK_INPUT相关流程2.2 CALLBACK_TRAVERSAL2.3 CALLBACK_ANIMATIONgoogle对于这个类功能描述是:choreographer接收定时脉冲(如vsync)然后安排应用的绘..
2021-07-18 17:34:49
702
1
原创 Android 显示子系统简介
目录1 相关概念介绍2.关键概念的关系2.1 Activity、PhoneWindow、DecorView、ViewRootImpl、Choreographer、Surface的创建和关系2.1.1 Activity 创建:APP拥有Activity2.1.2 Window的创建:Activity拥有Window2.1.3 DecorView的创建:Window拥有DecorView2.1.4 ViewRootImpl的创建:DecorView拥有ViewRootImpl2.
2021-07-18 16:57:41
1621
3
原创 Android S 新特性:应用行为更改
文章目录前言一、用户体验1. 前台服务通知UX延迟2. 手势导航的沉浸式模式改进二、 隐私1. Netlink MAC限制三、安全1. 阻止不受信任的触摸事件2.受影响的应用程序3. 例外情况4. 当不受信任的触摸被阻止时检测5.测试更改6. 应用程序无法关闭系统对话框7.例外情况四、更新的非SDK接口限制前言Android 12平台包含可能影响应用程序的行为更改。以下行为更改适用于在Android 12上运行...
2021-03-20 22:41:18
11229
2
原创 Serviceb(b_service)设计目的及其老化
文主要解答如下问题:1.什么是serviceb2.为什么要有serviceb3. Serviceb的老化
2020-05-04 11:45:49
1183
原创 深入理解应用主线程ActivityThread
在ActivityThread中,应用通过持有AMS的代理IActivityManager,和把自己的代理IApplicationThread通过attach函数传递给system_server,来建立一个进程间的双向通信的渠道。通过,Handler,handleMessage,sendMessage,来实现ApplicationThread和ActivityThread线程间通信,把消息发送给主线程,让主线程完成相关生命周期函数调用。
2020-03-21 16:51:23
805
原创 AMS 几种主动清理内存的几种方式
一、通过杀empty进程和cache进程来释放内存如果空进程的个数大于mConstants.CUR_TRIM_EMPTY_PROCESSES(CUR_TRIM_EMPTY_PROCESSES 的这个依据配置值的不同而不同,具体的可以见updateMaxCachedProcesses这个函数),并且该应用的上次活跃的时间,大于半个小时,这活跃是指该应用有相关组件在活动比如:在处理广播 空...
2020-03-08 22:43:32
4241
原创 Android 进程管理之ADJ 定义简化版
下面说的adj定义的条件,前置条件是它已经不再持有更高优先级的条件了,比如说:HOME_APP_ADJ = 600,我们说某个应用的adj = 600,条件是指该应用是isHomeProcess()为true.那么隐含的条件就是,他不再持有更高优先级了,比如:它不再是前台了。一、ProcessList.FOREGROUND_APP_ADJ = 0应用处在以下状态的时候...
2020-03-04 21:38:59
2292
翻译 Android R新特性:权限更新
Android 11使用户能够为位置,麦克风和摄像头指定更精细的权限。此版本还提供支持,以帮助开发人员审核数据访问并将数据访问与应用程序中的特定功能相关联One-time permissions在Android 11中,只要您的应用请求与位置,麦克风或摄像头相关的权限,面向用户的权限对话框都会包含一个名为Only this time的选项,如图1所示。如果用户在对话框中选择此选项,则您的应...
2020-03-04 21:23:01
2964
翻译 Android R新特性:定位相关更新
Android 11引入了对应用程序如何请求后台位置权限以及用户如何授予其权限的更改。具体更改取决于应用程序的目标SDK版本,但在Android 11上运行的所有应用程序均会受到影响Background location access为了给用户更好的控制,优良作法是让应用递增地请求他们所需的权限并优雅地处理权限拒绝。为了帮助实现最佳实践,Android 11删除了用户从应用程序内提示...
2020-03-04 21:06:46
1218
翻译 Android R新特性:存储相关的更新
Android 11进一步增强了平台,为外部存储上的应用程序和用户数据提供了更好的保护。作为这项工作的一部分,该平台引入了进一步的改进,以简化向范围存储的过渡。 该预览版引入了我们去年在Android Dev Summit上提出的一些增强功能,例如,对介质的选择加入原始文件路径访问,对介质的批处理编辑操作以及对Storage Access Framework的更新的UI。 在即将发布的Dev...
2020-03-03 23:47:50
3452
翻译 Android R新特性:隐私相关变更
Android 11以Android的早期版本为基础,添加了功能和更新以确保用户安全并增加透明度和控制力。 所有开发人员都应查看隐私功能并测试其应用程序。影响可能会因每个应用程序的核心功能,定位和其他因素而异。 要了解有关即将发布的Android版本中发生的主要更改的更多信息,请阅读以下各节。Top privacy changes下表总结了Android 11中与隐私相关...
2020-03-03 23:28:03
911
翻译 Android R新特性:非SDK接口限制的更新
Android 11根据与Android开发人员的协作以及最新的内部测试,包括受限制的非SDK接口的更新列表。只要有可能,在限制非SDK接口之前,请确保可以使用公共替代方案。如果您的应用程序未针对Android 11,则其中的某些更改可能不会立即影响您。但是,尽管您目前可以使用灰名单中的非SDK接口(取决于应用程序的目标API级别),但使用任何非SDK方法或字段始终会带来破坏应用程序的高风险...
2020-03-03 23:10:45
3452
翻译 Android R新特性:行为更改针对所有应用
Android 11平台包括可能会影响您的应用程序的行为更改。以下行为更改适用于在Android 11上运行的所有应用,无论targetSdkVersion如何。您应该测试您的应用程序,然后根据需要对其进行修改以适当地支持它们。JobScheduler API call limits debuggingAndroid 11为应用程序提供调试支持,以识别潜在的JobScheduler API...
2020-03-03 22:51:43
1963
翻译 Android R新特性:针对Android R 的应用
Android 11平台包括可能会影响你的应用程序的行为更改。以下行为更改适用于在Android 11上运行的所有应用,无论targetSdkVersion如何,你应该测试你的应用程序,然后根据需要对其进行修改以适当地支持它们.
2020-03-03 22:03:06
15567
原创 三种用systrace看应用的启动时间方法
用systrace分析应用冷启动,是性能问题分析中最常见的问题,要分析应用冷启动,首先就必须知道如何通过systrace来看应用启动时间,方法有很多种,下面介绍三种方法,大家可以在依据自己的习惯来选择对应的方法,但是,在做对比分析的时候最好采用同一种方法,这样可以尽可能的减少误差。
2020-01-05 22:01:56
4950
原创 UidChange和后台行为受限
为了增强用户隐私,Android 9 引入了若干行为变更,如限制后台应用访问设备传感器、限制通过 Wi-Fi 扫描检索到的信息,以及与通话、手机状态和 Wi-Fi 扫描相关的新权限规则和权限组。无论采用哪一种目标 SDK 版本,这些变更都会影响运行于 Android 9 上的所有应用。后台对传感器的访问受限,Android 9 限制后台应用访问用户输入和传感器数据的能力。 如果您的应用在...
2020-01-05 16:25:32
1583
2
原创 进程管理之进程优先级
前言进程优先级实际上是系统对进程重要性的一个客观评价。根据这个评价的结果来为进程分配不同的系统资源,这个资源包括内存资源和CPU资源。为了保证“公平公正”的评价每个进程,Google工程师为此设计了一套评价系统。本文试图从面相对象的角度和功能设计者角度来理解该功能,具体思路如下:要实现一个功能,有必要的时候我们会去为他制定一些属性,对于设计者而言这些属性肯定是必须的,因此作为使用者我们必须...
2019-12-28 14:30:55
3514
1
原创 Android Q新特性:Delay the ACTION_CHARGING broadcast
1.1 目的为了提升用户的充电速度的体验1.2 之前存在的问题首先,我们知道,在手机充电的过程中或者在电量大于90%,系统会发送ACTION_CHARGING广播,对于第三方应用或者系统应用来说,它们接收到这个广播后会做很多比较好电的工作。我们想象一个场景,用户手机没多少电了,他们想快速充一下电后立马用,比如说他们希望电量增加20%后立马用起来,但是对于android Q之前的系统而言,当...
2019-12-26 00:12:28
555
1
原创 Activity的生命周期
Activity作为四大组件之一,是最常用的组件,本文将它的生命周期总结为:四种状态,三个嵌套生命周期循环,七个生命周期函数,然后逐一讲解!
2019-12-22 12:22:17
901
1
原创 抓systrace的常用的四种方法
Systrace是分析性能问题的最基本的工具,那么如何抓取systrace呢? 本文将介绍四种使用工具抓取 Systrace 的方法!
2019-12-22 11:22:34
9305
2
原创 什么是Android性能,如何分析性能问题?
本文主要分享本人对于android性能的理解,以及分析性能问题的一般思路,后面的博客陆续会讲具体的性能问题分析案例
2019-12-21 19:10:05
1105
1
C++游戏拖板车
2012-03-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人