自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 Android进程通信(常见的四种)

Intent ContentProvider Massger Broadcast AIDL等等都需要基于Binder机制完成跨进程通信。AIDL(Android Interface Definition Language):接口描述语言,生成的代码封装了binder。在内核空间,负责各个用户进程通过Binder实现通信的内核模块成为Binder Driver。binder主线程是在进程创建时创建的,在进程销毁前不会退出。Binder线程的创建是在所在进程创建的过程中创建的。Zygote创建进程。

2024-09-20 14:38:10 300

原创 WMS启动流程梳理(基于AndroidU)

systemserver 中执行了WMS的以下方法:main。

2024-09-10 18:11:12 416

原创 Input模块流程(基于AndroidT)

一旦对应的设备上有可读的input事件,epoll_wait就会返回并待会deviceid,找到具体的device。InputManager 的构造函数中创建了InputDispatcher 和InputReader对象,并把InputDispatcher作为参数传递给InputReader对象。InputManagerService:负责InputReader 和InputDispatcher的创建,并提供policy用于events的预处理。

2024-09-05 17:57:48 1254

原创 Input流程---客户端向系统端注册

2.WindowSession.addToDisplayAsUser 通过此方法在WMS中构造服务端和客户端的InputChannel对象,并将客户端的InputChannel对象进行赋值;3.创建客户端的WindowInputEventReceiver对象,并将客户端的fd加入MessageQueue的looper监听中。在activity的Resume方法会调用,系统为其创建ViewRootImpl对象。此时客户端的InputChannel成功创建。1.创建空的InputChannel对象;

2024-08-28 15:08:31 175

原创 抓取WMS 日志Protolog

链接:https://pan.baidu.com/s/1a2imJPpEntBoAy-PoDRtcQ?(WM_DEBUG_RECENTS_ANIMATIONS TAG 这个就是需要抓取的TAG 给其使能)抓取到pb日志,使用winscope.html打开进行分析。通过百度网盘分享的文件:winscope.html。protolog log抓取及查看。–来自百度网盘超级会员V5的分享。

2024-08-27 16:16:13 147

原创 Activity界面显示到Window过程梳理

1*因此调用的是PhoneWindow的setContentView方法。调用到父类Activity的setContentView方法。走到MainActivity的onCreate方法。

2024-08-27 16:06:37 189

原创 老化休眠唤醒测试异常失败

在系统中搜索WAKE_REASON_GESTURE,可以看到有多处传入此reason的调用,其他地方调用PMS的wakeup方法,是通过PowerManager去获取并调用的,因此在PowerManager中添加堆栈打印。分析如上,看下来是在一次测试过程中,调用到了PMS的wakeup,传入的reason是WAKE_REASON_GESTURE。这里对应的是原生Setting的Display的高级设置Lift to wake。修改为默认关闭即可解决此问题。可以看到问题复现后的堆栈。版本此值是默认打开的。

2024-08-27 15:02:30 126

原创 记录一次系统短时间内发生多次ANR

查看连续几次ANR的Cpu Total值都在96% 98% 100%,iowait值并不高,且kswapd0占Top2,基本可以确认此问题是Low Memory问题。可以看到短时间内连续发生多次进程的ANR,类似于这种连续的ANR需要分析第一次的ANR原因,先解决掉第一次ANR再测试此问题是否还会再次复现。客户报的问题:后台在下载多个应用时,正常使用设备,发生"System UI isn’t responding"可以看到/proc/pressure/memory的压力值比较大。1.2这两项一般很少修改。

2024-08-19 15:31:15 258

原创 App创建后MainActivity加载到界面

item.execute 实际上调用的是LaunchActivityItem的execute方法。AppDeathRecipient定义在AMS中,实现了IBinder。AppBindData 是ActivityThread的静态内部类。Activity的attach应该做的是window相关的操作。跨进程调用的AMS的attachApplication方法。回到进程的ActivityThread。回到ActivityThread。

2024-08-17 14:45:52 217

原创 记录一次三方App ANR分析过程

1.在Monkey error中查看com.google.android.apps.adm ANR时候的cpu loading,cpu loading都比较低,大概在20%-30%,应该跟系统负载无关。2.分析了两次ANR,发现都是com.google.android.apps.adm的MainActivity的绘制存在异常,导致input超时。Monkey 测试出现多次com.google.android.apps.adm ANR。

2024-07-24 16:58:39 393

原创 App进程创建代码分析(基于Android 14)

开机过程中已经启动ZygoteServer的runSelectLoop方法并创建ZygoteConnection。调用到Process的start方法,创建了一个ZygoteProcess对象并调用start方法。点击桌面启动一个进程(pid:5636 包名:com.example.test111)调用到ProcessList.java的startProcessLocked方法。调用到AMS的startProcess方法。

2024-07-15 17:55:43 188

原创 从系统侧设置开机三方应用自启动

2.对于没有源码的三方应用,无法直接在开机的时候直接启动创建进程,因此想到的解决方式是按照有源码的三方应用的persistent检测并创建进程的流程,强制加入需要的三方应用的信息并创建进程。1.对于有源码的三方应用,可以在/package/XXX/XXX/AndroidMannifest.xml中添加属性。以上满足了两种三方应用的开机自启动,测试再次打开应用后测试为温启动不是冷启动,满足对于打开应用速度拆帧要求。当进程设置为常驻进程后,adj的值比较高,不容易被ActivityManager kill掉。

2024-07-09 10:35:40 307

原创 移除SafeMode

移除SafeMode第一次尝试的方法是在systemui下面直接将ShutDownAction的onLongPress和onPress方法回调都执行shutdown流程。客户不同意在SystemUI目录下做此修改。尝试第二中修改方案。查看/data/system/users/0.xml文件。增加DISALLOW_SAFE_BOOT。

2024-07-09 10:32:42 152

原创 长按Power键关机流程

调用到ShutdownThread的实现方法,长按Power off传入的safeMode值为true,执行rebootSafeMode方法;最终都调用的是ShutdownThread的shutdownInner方法,若是safemode则进行弹窗提示。客户提出去除Safe Mode需求,这个是在长按Power键跳出Power off按钮,再长按Power off后会弹出Safe Mode 进入提示框,然后点击之后就会重启进入Safe Mode模式。长按到界面出现Poweroff 弹窗逻辑梳理。

2024-07-04 19:30:03 330

原创 解析Hprof文件

解析Hprof文件1.安装MemoryAnalyzer-1.15.0.20231206-win32.win32.x86_642.打开报错:Version1.8.0 of the jvm is not suitable for this product,Version17 or greater isrequired配置java位置MemoryAnalyzer.ini文件中添加:-vmC:Files。

2024-07-02 16:39:52 2456

原创 DropBoxManagerService源码

调用DropBoxManager的addText,进而调用到DropBoxManagerService服务。DropBoxManagerService创建。

2024-07-01 18:05:21 205

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除