AMS
文章平均质量分 83
ActivityManagerServices流程源码分析,源码比较多
今天也是星期五
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
framework调用getUsers方法权限问题----clearCallingIdentity
通常,我们可以使用Binder.clearCallingIdentity()来清除当前线程的调用标识符,能够让线程在调用过程中失去原有的权限身份,进而绕过一些权限的检查。在调用getUsers()方法前调用Binder.clearCallingIdentity(),之后再调用Binder.restoreCallingIdentity恢复线程身份就可以正常添加账号了。起因是做了一个功能:在启动activity时,需要获取除主用户之外的一个用户,如果是处于主用户之外的模式下,则跳过某些界面的启动。原创 2025-03-13 10:53:41 · 570 阅读 · 0 评论 -
Activity的finish()流程
在Android中,我们可以通过调用finish()方法来结束一个Activity,调用这个方法后,Activity对应的生命周期方法会被调用、所在的Task也会发生变化。本文主要通过分析Activity的finish流程来了解Activity的结束时生命周期及Task变化,代码基于Android 14。原创 2024-12-12 19:48:37 · 2124 阅读 · 0 评论 -
ANR机制----基于Android R流程
5秒内无法响应屏幕触摸事件或键盘输入事件= null?return -1;:在执行前台广播(BroadcastReceiver)的函数时10秒没有处理完成,执行后台广播为60秒没有处理完成。:前台服务20秒内,后台服务在200秒内没有执行完毕。:ContentProvider的publish在10s内没进行完。原创 2023-08-28 17:05:27 · 660 阅读 · 1 评论 -
Launcher界面的启动流程
基于Android R源码流程。原创 2023-07-13 16:57:57 · 509 阅读 · 0 评论 -
stop应用无法收到广播问题
原因:Android在3.1以后将新安装并且从未被启动的应用置为“STOPPED”状态,这种状态指那些安装了但从未启动过的apk,或在settings中被force stop的apk,这种状态下的应用是无法接收到广播的(IntentResolver.buildResolveList)。1.excludingStopped:设置了FLAG_EXCLUDE_STOPPED_PACKAGES标识,默认设置,所以一般情况下stopped应用都无法接收到广播。包含stopped状态下的package。原创 2023-07-13 16:51:39 · 863 阅读 · 0 评论 -
四大组件对OOM_ADJ的影响
(1)若进程A查询进程B的provider得到Cursor,在进程A关闭Cursor之前,ActivityManager会保持provider connection,此时B的OOM_ADJ将提升至与A相同。(1)若进程A bind 住进程B 的service,ActivityManager会将B的重要性提升至与A 相同。如果A使用完服务后,忘了调用unbindService(),B的重要性就降不下来,极端情况是,若A是常驻的,会导致B也变成常驻了,引发系统性内存问题.执行onReceive() 时。原创 2023-07-13 16:14:13 · 346 阅读 · 0 评论 -
force-stop流程
(1).onForceStopPackage():强制停止该package,主要是没有绑定进程的activities,绑定进程的activity会随着进程消亡而消亡,第一步执行这个方法主要是为了防止这个package中中没有绑定进程的activity重新启动该package。一般地force-stop会指定包名,该方法会遍历当前所有运行中的进程mProcessNames,以下条件同时都不满足的进程,则会成为被杀的目标进程:(也就是说满足以下任一条件都可以免死)可以通过adb命令和设置中的入口来使用。原创 2023-07-13 16:07:48 · 4932 阅读 · 0 评论 -
AMS流程分析
基于android R流程,代码较多。原创 2023-07-13 14:56:55 · 1096 阅读 · 0 评论
分享