安卓Framework wms/ams实战作业布置-千里马学框架

20240128 C#与SCPI协议实战:轻量级仪器控制库ScpiNet应用指南 本文详细介绍了轻量级C#库ScpiNet在仪器控制中的应用。相较于传统的NI-VISA,ScpiNet无需安装庞大运行时,通过纯C#实现直接与USB或以太网设备通信,支持跨厂商SCPI仪器。文章提供了从快速连接到实战封装、错误处理的完整指南,帮助开发者构建简洁高效的自动化测试系统。 阅读详情
AI摘要

本文探讨了在桌面环境中,通过不同方式(如多任务界面和ADB shell命令)杀死应用程序时,其在Android系统层级结构树中的Task、ActivityRecord和WindowState的变化情况。分析了为何在后台直接kill进程,仅WindowState被移除,而Task和ActivityRecord仍保留的现象。

背景:

近来有学员朋友询问了一个现象,具体描述看如下截图:
在这里插入图片描述

简单总结一下他的疑问点:

1、在桌面最近任务里面杀死一个应用,这个应用的在层级结构树的Task,ActivityRecord,WindowState都会被移除

2、如果当前应用在后台(注意一定要在后台,不能在前台),使用adb shell 命令进行kill进程发现只有应用的WindowState在结构树被移除,其他的ActivityRecord,Task就没有被移除。

哈哈,确实平时没注意这个现象,看到他描述的这个结果有点意外,主要不影响上面运行,属于安卓自己设计机制,所以与我们想象的一旦进程都被杀了,那么层级结构树肯定不可以残留相关的Task和ActivityRecord。

实际aosp验证该现象:

正常情况下

在这里插入图片描述

在这里插入图片描述
可以看到层级结构树有短信和短信Task = 968

多任务中移除短信或者直接前台kill:

多任务上划移动删除
在这里插入图片描述
移除后看看层级结构树树:
在这里插入图片描述看到了只剩下桌面的task和ActivityRecord

短信退到后台kill:
test@test:~/disk2/aosp14$ adb shell ps -A |grep mess
u0_a95        2521   285   13884820 159132 do_epoll_wait       0 S com.android.messaging
test@test:~/disk2/aosp14$ adb shell kill 2521
test@test:~/disk2/aosp14$ adb shell ps -A |grep mess

操作kill com.android.messaging进程后再看看层级结构树:
在这里插入图片描述
这里可以看到还有短信的Task和ActivityRecord,但是没有了对应的WindowState

作业布置:

作业目标:
1、多任务移除进程和进程后台直接命令kill移除各自是怎么触发的移除操作,请各自通过堆栈打印分析出差别

2、进程前台移除和进程后台移除有啥区别,同样通过堆栈展示差别
作业要求产物:
请给出详细的流程图,和相关的堆栈日志

上面两个点就是给大家学员朋友们的实战作业,属于一类实战检验自己对代码差异的分析能力,自己堆栈打印分析能力的锻炼,希望广大学员积极交作业,作业完成好的有奖励哈

更多framework技术干货,请关注下面“千里马学框架”

Python 爬虫实战:爬虫与 ECharts 结合 —— 前端可视化展示 本文介绍了爬虫技术与ECharts可视化结合的完整实现流程。首先使用Python爬取京东商品数据(价格、评价数等),通过BeautifulSoup解析和pandas处理转换为JSON格式。然后构建前端页面,利用ECharts实现价格分布柱状图、价格-评价数散点图和店铺占比饼图三种可视化效果。文章详细解析了爬虫数据提取、格式转换和前端图表配置等关键技术点,并提供了完整的代码示例。最后提出了基于API接口、数据库存储等扩展方向,为数据采集到可视化展示提供了完整的解决方案。 阅读详情

相关推荐

初识机会网络仿真器ONE中ExternalMovement移动模型(导入外部移动数据)

最近半个月一直在研究ONE中关于ExternalMovement移动模型的源代码,在网上几乎没有找到相关的资料,很是苦恼,如果有共同研究方向的小伙伴欢迎联系我,共同讨论进步。 下面记录一下几点感悟: 1、使用外部数据的前提是在ONE的配置文件中增加及修改相关代码: Group.movementModel = ExternalMovement ExternalMovement.file = move...

qq_36974792的博客 659

安卓车载车机手机framework系统开发WMS/AMS体验专题

Android手机车机大厂Framework系统-WMS/AMS系统专题实战课作者:千里马10年+Android系统及应用开发经验,曾就职于爱奇艺,美国unokiwi,中兴努比亚,主要红魔手机ROM创新技术规划,技术难题,亮点卖点挖掘突破,基本好多游戏特色功能(游戏空间,红魔时刻,一键连招,红魔投屏)都有我的成果,多次获得公司优秀员工,优秀发明人,优秀讲师,发布发明专利百余篇国内首个做android framework实战开发课程作者 ps:购买了课程一定记得联系客服加入课程专群基于最新国内aosp 13/android 13代码深入理解framework重点模块wms胜任wms相关的需求开发掌握系统闪黑,冻屏疑难问题解决成为业界wms/ams模块专家打下基础

Pspice安装教程:Windows系统完整指南(含环境变量设置)

详细讲解在Windows系统中完成Pspice安装的全过程,涵盖安装步骤与关键的环境变量设置,帮助用户顺利运行仿真工具。适合初学者快速上手pspice安装教程中的核心环节。

weixin_42230607的博客 1178

clearCallingIdentity与restoreCallingIdentity-千里马framework系统源码实战详解

hi,粉丝朋友大家好:今天带大家来学习一个系统开发过程中大家即“熟悉”又陌生的两个方法,分别是clearCallingIdentity和restoreCallingIdentity,一般他们是成对出现在我们的framework代码中,但大家平时分析源码时候好像并没有在意他的真正作用是什么?为啥在框架代码分析时候可以看到他的大量出现?

learnframework的博客 1308

告别报错!Win10下Autodock Vina 1.2.3保姆级安装与避坑指南

本文提供了Win10系统下Autodock Vina 1.2.3的完整安装与实战指南,涵盖环境配置、分子文件预处理、对接参数优化及结果分析等关键步骤。通过详细的避坑技巧和优化方案,帮助用户高效完成分子对接任务,特别适合生物信息学研究人员和药物发现领域的初学者。

weixin_29969209的博客 403

YOLOv8改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用

本文记录的是利用双级路由注意力机制优化的目标检测网络模型。传统的复杂度高,随着输入空间分辨率增加,计算量呈平方增长,导致严重的可扩展性问题。而本文所使用的在获取全局信息的同时,通过区域到区域路由和令牌到令牌注意力的合理设计,减少了不必要的计算量。BiFormer: Vision Transformer with Bi-Level Routing Attention采用四阶段金字塔结构,与一些先进的视觉Transformer类似。在每个阶段,首先使用重叠的补丁嵌入(在第一阶段)或补丁合并模块(在第二到第四阶段

Limiiiing的博客 614

千里马android framework实战开发-binder驱动之oneway导致的transaction failed

csdn在线学习课程,课程咨询答疑和新课信息:QQ交流群:422901085进行课程讨论 android跨进程通信实战视频课程(加群获取优惠) 千里马android framework实战开发-binder驱动之oneway导致的transaction failed 首先来看错误: 06-15 12:10:36.686 31395 31507 W System.err: android.os.DeadObjectException: Transaction failed on small parcel; r

liaosongmao1的专栏 2599

涨点神器:基于YOLOv8的SPD-Conv小目标检测实战教程——让低分辨率场景检测精度飙升

从代码修改到场景落地,每一步都围绕“提升检测精度”这个核心目标,而实际数据也证明了这项技术的强悍——它不是实验室里的花拳绣腿,而是能真正解决工业痛点的涨点神器。在实际场景中,比如无人机巡检的低分辨率航拍图中,对电线、小设备的检测,YOLOv8-SPD的漏检率降低了70%以上。落地时,只需将训练好的YOLOv8-SPD模型部署到边缘设备或云端,即可享受其在小目标、低分辨率场景下的强大性能。的特征融合模块中,通过插入SPD-Conv,让模型在处理小目标时,既能保留空间细节,又能增强通道维度的特征表达。

m0_71589036的博客 157

千里马android framework车机车载手机智能驾驶双屏互动实现方案

这个就是没有动画版本的双屏互动,功能其实也是实现的,但是体验是不是感觉起来差的太多,而且还带有黑屏。2、画面A的平移,两个屏幕都要进行显示,这个难度较大,得考虑好相关的画面怎么都可以显示在两个屏幕。这里其实不需要写代码,可以直接调用am display相关的命令即可以实现这个方法的调用。不过还好的是功能可以用,那么我们也根据wms课程基础后也来实现一下这个双屏互动的功能。1、多指全局动作监听,而不是在某个app的onTouch里面监听,这里其实之前的。

learnframework的博客 5967

C#企业级工作流管理:从优化到重构的实战指南——代码深度解析与性能调优策略

本文通过Workflow Core与Elsa引擎实现企业审批流程优化,将处理时间从72小时缩短至2小时,效率提升200%。文章包含12个代码示例,涵盖流程梳理、引擎选型(对比Workflow Core与Elsa特性)、模块化重构(策略模式应用)及异常处理机制。关键实现包括:可视化流程建模、Serilog性能监控、Elsa集成配置、策略模式消除重复代码,以及补偿事务设计。最终方案支持高并发,通过数据库连接池优化性能,为企业级工作流系统提供完整技术方案。

墨夶的博客 896

华为OD机试 - 最快到达医院的方法(Python/JS/C/C++ 2024 E卷 100分)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 2169

HIDL实战开发-千里马android framework车载车技手机系统开发

上面default默认生成的bp是so,这里要把他变成可执行的服务,需要增加一个service.cpp作为main方法载体。需要在自己设备目录找到自己的manifest.xml然后加入自己的hidl。5、添加service.cpp,自启动rc,修改Android.bp。4、生成一个自动生成 hal 接口的 Android.bp。6、需要搞个test,来测试一下服务是否ok,这个时候需要。主要目的是把test目录的Android.bp可以加入编译。执行后生成如下Test.cpp,Test.h文件了。

learnframework的博客 2976

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

wms你会吗?一起来分析aosp原生窗口显示bug-vip学员作业

后,正常课程中的10几个实战项目案例学会后,一般都具备了较强的实战能力,有的学员们希望马哥搞一些非课程的案例问题进行实战,想检测自己的实战解决问题能力如何。其实重叠还不是问题本质哈,主要是重叠显示的停留时间有点长,具体看这个窗口显示问题的bug情况。录屏看的话大家可能会觉得看不出啥问题,只看到一闪,因为本身问题可能就持续100ms左右,但是确实是会给出很不好的重影体验。5、给出相关的问题修复方案,这里有的学员可能一开始就说直接关闭动画暴力解决,但是如果不能关闭动画呢如何解决?1、开启设置中的开发者选项。

learnframework的博客 289

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SurfaceFlinger中Layer泄露如何排查解决?-vip学员作业

在AOSP 13中,切换壁纸时出现ImageWallpaper Layer内存泄漏,导致mOffscreenLayers持续增长,可能突破4096层上限引发新图层创建失败。问题根源在于壁纸销毁后未正确从offscreen集合移除,因Layer无父级但未被及时清理。与其他窗口不同,壁纸生命周期管理特殊,且未主动释放。修复需在壁纸销毁时显式从mOffscreenLayers移除对应Layer。排查流程包括dumpsys分析、代码追踪offscreen添加逻辑、定位异常残留。建议在WallpaperService

liaosongmao1的专栏 5

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

千里马2024年终总结-android framework实战

心里焦虑加大了,需要调节好平常心面对创业以来最大感受就是“创业艰难”,原本预想的很美好,终于可以有勇气为了理想和兴趣奋斗了,一定是每天满怀激情的干。实际情况是:当自己的兴趣与谋生的收入挂钩时候,一切变得不那么理想和美好。每天还是会有担心自己课程的销售情况,必然就会有焦虑,这种心态和上班兼职搞完全不是一回事。所以心态上确实是相比以前有焦虑一些,这个部分做的不够好。时间不够用创业初期,也没有很多资金搞团队,大部分工作都落到我的头上,比如一些售前咨询,课程研发录制,答疑服务等。

liaosongmao1的专栏 308

android framework工程师遇到成长瓶颈迷茫怎么办?千里马经验分享

上面提到的几点就是我这边给一些framework的老工程师在公司工作过程中遇到瓶颈如何提高的方法,相信按上面的方法做了以后你一定可以突破瓶颈,找出新的方向,技术上升一个档次哈。

learnframework的博客 1388

千里马android framework开发解决Accessing hidden method限制,让应用访问隐藏方法(需要可以修改系统源码方案)

hi,粉丝朋友们大家好! 今天来给大家分享一下,就是经常大家会做安卓系统开发工作问到一个问题,那就是我如果framework代码中增加了一个方法啥的,但是我又不想公开给第三方应用知道,只想让我系统的应用知道,那该怎么办呢?其实这个时候经常就会用到一个hidden的标签,来代表这个方法是隐藏方法,隐藏方法就是给系统内部用的,意味着第三方app就无法使用。这个其实也很常见,自从android p开始android系统就开始对访问hidden的限制越来越严格,虽然我们网络上有各种奇葩招来逃避不允许调用hidden

learnframework的博客 1万+

学员作业:高阶WMS显示相关疑难问题黑屏/部分黑问题案例

有了aosp可以复现的步骤,那么这个问题其实本质上就是aosp的原生问题,大家一旦修复那就是帮助google改了相关的重大bug哈,很多同学都对这类原生的疑难问题修改,非常感兴趣,当然啦这个难度肯定也是最大的,所以这里把这个疑难问题整理成学员作业,让广大vip学员们可以有更好的实战解决问题锻炼。针对自由窗口相关需求,学员们在学习了课程后,也经常使用会用于公司的实战开发项目。刚开始还以为这个自由窗口产生部分黑的问题和以前课程讲的一样,但是学员认真观看后反馈两个问题场景是完全不一样的。下面学员请教的详细情况。

learnframework的博客 376

Framework学习

InputDispatcher:是 IMS 中的另一个关键组件,运行于一个独立的线程中,InputDispatcher 中保管来自 WMS 的所有窗口的信息,收到 InputReader 的输入事件后,会在其保管的窗口中寻找合适的窗口,并将事件派发给此窗口;ViewRootImpl:对某些窗口,如壁纸窗口,SurfaceView 的窗口来说,窗口就是输入事件派发的终点,而对其他的如Activity,对话框等使用了 Android 控件系统的窗口来说,输入事件的终点是控件;

qq_37721987的博客 186

安卓冻屏bug案例作业分享-千里马学员wms+input实战作业

近期有学员反馈在aosp14高版本上有了一个新窗口TaskBar,这个但是有需求就是对这个TaskBar进行隐藏,所以有一个需要对这个TaskBar进行进行隐藏需求。因为要实现一个对TaskBar隐藏需求功能,所以这里需要先实现这个需求,正因为实现这个需求后才发现可以复现这个冻屏问题。2、分析出来了冻屏原因,再考虑怎么屏蔽TaskBar就会用法该bug,为啥TaskBar存在就不会有该bug。这里普通的手机是无法看到TaskBar,需要进行相关density进行设置,变成平板设备才可以。

learnframework的博客 922

android-wms-甩屏实现方案

以下是Android WMS(Window Manager Service)实现。

summerkissyou1987的专栏 808

跟千里马学框架 遇到的坑

加一个临时的环境变量 : export ANDROID_PRODUCT_OUT=你自己的源码路径/out/target/product/generic_x86_64。在编译 aosp 的 所有的东西都是和他一样的, 但是出现了这个问题。首先你的 ubuntu 要开启虚拟机。明明所有的都是一样的但是出现了这个问题 , 啥情况。这里我们选择:6 –-- > aosp_x86_64。然后在进行 : emulator。

qq_26500807的博客 618

千里马Framework手机车机互联投屏实Hal+perfetto+SurfaceFlinger合集

千里马Android手机车机大厂Framework系统-WMS AMS系统专题实战课。千里马Framework 手机车机互联投屏实战专题(安卓framework实战开发。千里马Android手机大厂Framework系统-Input系统专题实战课。千里马Android手机大厂Framework系统-跨进程通信高级实战课。千里马安卓framework实战开发基础合集车载车机手机系统开发必学课。千里马Android手机大厂入职培训Framework系统高级开发课。

2501_91082100的博客 517
上一篇: 手把手教你做投屏AAC的详细介绍-千里马带你学framework
下一篇: 音视频开发必备神器--yuv和rgb原始数据文件查看开源软件YUView使用和编译
千里马学框架
博客等级 码龄6年 1万+粉丝 650原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值