自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 activity可见时发生relaunch

依次启动两个activity,MainActivity和SecondActivity然后做一下横竖屏旋转此时SecondActivity发生了relaunch,但是MainActivity并没有发生relaunchfinish掉SencondActivity,此时MainActivity发生relaunch这个流程是什么样的呢?

2025-08-21 10:58:32 215

原创 AMS学习专题

PendingIntent相关流程解析-CSDN博客视频:Framework-PendingIntent-CSDN直播

2025-08-17 10:59:02 281

原创 Wms学习专题

2025-08-17 10:43:20 557

原创 window的remove流程

mWindowSession.remove----通知wms移除。

2025-08-17 09:49:04 112

原创 Activity对应的window是什么时候销毁的?

performDestroyActivity中会回调给到用户ondestory方法。在这之后 wm.removeViewImmediate(v)将window进行移除。在ActivityThread中的handleDestroyActivity。

2025-08-17 09:17:13 233

原创 获取屏幕宽高

打印结果那么到底是通过什么属性获取到的屏幕的宽高呢?

2025-08-13 14:50:16 265

原创 WindowState的5个状态

比如一个activity有多个window,当前window已经完成了,需要等待其他window完成的时候,这个时候就是readytoshow。他是介于COMMIT_DRAW_PENDING和HAS_DRAWN之间的一种状态。finishDrawing通知wms。

2025-08-11 09:24:23 202

原创 容器类型和buffer类型的surfaceControl

一次是在relayoutwindow的时候总结:relayoutwindow的时候创建了一个Buffer类型的SurfaceControl。

2025-08-10 21:44:32 265

原创 Activity切换到后台,surface会销毁吗

MainActivity启动SecondActivity时。MainActivity在前台时。对应的surface被销毁了。

2025-08-09 08:38:02 203

原创 WindowManage和Activity的关系

windowManager实际上是管理这个Activity下对应的windowState的;同一个应用内的两个activity分别打印WindowManager的hashcode。为每一个phoneWindow创建了一个mWindowManager对象。所以是每个Activity对应一个windowManager。每个activity都对应一个WindowManager。我们下面看一下windowManager是如何创建的。结果:两次打印的hashcode并不相等。这个概念比较容易搞混了。

2025-08-08 14:54:49 593

原创 mWindowManager.addViewdemo演示

2.这个compatFrame和frame对view的绘制有什么影响。1.这个compatFrame和frame是如何被计算出来的。

2025-08-08 14:19:01 119

原创 ActivityManager.addOnUidImportanceListener

/ 最后存入到了UidObserverController的mUidObservers中。

2025-08-06 22:18:52 313

原创 如何自己设计一个广播

静态注册的广播接收器,如果进程没有启动,那么需要把进程拉起,并通知。广播根据他的分类,我们设想一下,他需要处理哪些场景?那么你作为一个开发者会怎么设计这个广播?这个广播对应的广播接收器,有100个,且有的是静态注册的,有的是动态注册的,这100个分散在不同的进程中,并且拉起一个进程,是非常耗时的。比如我发送了一个广播,

2025-08-05 23:09:11 194

原创 LaunchMode

mode。

2025-08-05 22:31:40 125

原创 Activity启动流程(不含代码)

针对以上问题,给大家一个建议,看代码要有看地图的一种思维,比如我想地位到我的老家秣陵,我需要先把地图缩小到可以看到江苏,然后再以江苏为中心放大到南京,最后放大到江宁,最后再放大到秣陵;如果你不整体去理解,就像你开车在高速上,每个地方都感觉差不多,你也不知道你自己身处何处,导致迷失自我;b.B进程还不存在的情况,则需要通过zogyte进程先创建B进程,B进程创建后,再通知SYstme进程。3.判断是否存在应用进程,不存在的话,需要创建一个应用进程。b.A进程onPause完成之后,再通知到system侧。

2025-08-05 22:29:06 537

原创 广播的知识点

注册接收器(通过Context.registerReceiver()方法):是动态地由正在运行的进程去请求注册广播。有序广播:这类广播会按照特定的顺序分发给广播接收端,每个接收端都有机会影响最终的广播“结果”,包括中止向任何剩余的接收端的分发流程。1.如果是静态注册的广播,ams在发送广播给到对应的广播接收器的时候,发现广播的接收器对应的进程没有起来的话,会先启动对应的进程。粘性广播:广播被分发给相关的接收端,且还会被广播系统缓存下来,后面一旦有接收端发起注册,就会立刻给他们发送缓存粘性广播。

2025-08-05 09:00:00 150

原创 广播的dump信息查看

历史记录摘要,最多可以保存1000个,但是信息量比较少。

2025-08-04 10:00:00 318

原创 event日志

之前做应用开发的时候,基本看的都是logcat日志,然后做sdk开发的时候,就很痛苦,因为被人使用我的sdk的过程中,会出现各式各样的问题,我们除了需要别人提供视频之外,还需要花费大量的时间和别人沟通技术的实现;作为一个开发,我们可以认为这些event日志对应的就是fwk的关键节点,了解这些日志可以帮助我们快速了解问题事件点发生了哪些事;还有其他很多的event,每个event中包含的信息量也是巨大的,"wm_"开头的是systemserver侧的处理。"wm_on"开头的是应用侧的处理。

2025-08-04 07:27:47 352

原创 Config有哪些

App可用的bounds,保存mBounds中不包含insets系统装饰的区域(Android 15上有变化);当前窗口容器(eg. Task、ActivityRecord)的bounds,包含insets,窗口相对于整个屏幕的可用区域。container能得到最大的bounds,分屏下activityRecord是半屏大小,其他场景为屏幕大小;当前容器的旋转角度,一般只和当前Container和所在的Display有关。activity类型,包括标准、桌面、最近任务、助手、息屏。1:折叠屏设备中的外屏。

2025-08-03 09:18:09 452

原创 ApplicationStartInfo讲解

触发启动的正在启动的组件类型。START_REASON_CONTENT_PROVIDER(4):因为执行 ContentProvider 的访问而启动的进程。START_REASON_LAUNCHER_RECENTS(7):因为执行 Launcher 上的历史恢复而启动的进程。STARTUP_STATE_FIRST_FRAME_DRAWN(2):表示进程已经启动并完成了第一帧的绘制。Android 16 添加了。START_REASON_BOOT_COMPLETE(2):因为执行系统启动广播而启动的进程。

2025-08-03 09:14:03 759

原创 后台启动service限制

系统不允许后台应用创建后台 Service原因分析:如果调用ActivityManager.getService().startService返回值中包含?,则抛ServiceStartNotAllowedException这个判断主要是在startServiceLocked中详细看一下getAppStartModeLOSP。

2025-08-03 06:00:00 374

原创 Service相关ANR

service相关的anr

2025-08-02 11:53:37 587

原创 Service三种启动流程

另外还有两个不经常用到的:onRebind:重新bind,先startservice,在bindservice,在unbind,在bind的时候会回调。

2025-08-02 11:33:36 788

原创 forceStop流程会把对应进程的pendingIntent给cancel掉

可以看到Androidv相比于Androidu,多了一个 clearPendingIntentsForStoppedApp,即在应用被forceStop的时候,也会移除对应的pendingIntent。2.音乐类应用传入meidaButton中的pendingIntent失效,导致应用进程被杀之后,无法通过耳机拉起音乐进程。1.脑钟应用进程再被forceStop之后,如果用户不再去打开闹钟,那么闹钟到点不会响铃。首先对比Android U和Android V的代码在forceStop时候的处理。

2025-08-01 23:35:31 264

原创 通过pendingIntent启动activity被block问题

Android V上,同样满足上面这个条件的情况下,并不会就认为运行后台启动activity,而是会判断本次启动是否存在realCallUid,如果存在的话,还会有新的限制。建议在发送的时候给pendingIntent加一个opts.setPendingIntentBackgroundActivityStartMode,类似下面的写法。

2025-08-01 23:27:02 203

原创 PendingIntent的flag和原理解析

PendingIntent的flag解析

2025-08-01 23:16:31 381

原创 PendingIntent相关流程解析

PendingIntent逻辑

2025-08-01 22:13:43 1510

原创 Android Frameworks从零开始

framework学习之路

2025-08-01 22:08:14 269

空空如也

空空如也

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

TA关注的人

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