当前位置: 首页 > news >正文

Android14 增加 property 记录系统当前前台应用的 packageName and className

Android14 记录前台应用的包名和类名

功能描述
增加属性记录前台应用与 activity
具体修改实现
frameworks/base
diff--git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index d1b55a4..20ad138100644---a/services/core/java/com/android/server/wm/RootWindowContainer.java+++b/services/core/java/com/android/server/wm/RootWindowContainer.java @@-2509,6+2509,9@@classRootWindowContainerextendsWindowContainer<DisplayContent>false/* deferPause */);}+privatestaticStringsLastTopPkg="";+privatestaticStringsLastTopAct="";+booleanresumeFocusedTasksTopActivities(TasktargetRootTask,ActivityRecordtarget,ActivityOptionstargetOptions,booleandeferPause){@@-2565,6+2568,34@@classRootWindowContainerextendsWindowContainer<DisplayContent>}}+try{+finalTaskfocusedStack=getTopDisplayFocusedRootTask();+if(focusedStack!=null){+finalActivityRecordtopRunningActivity=focusedStack.topRunningActivity();+if(topRunningActivity!=null){+Stringpkg=topRunningActivity.packageName;+Stringactivity="unknown";++if(topRunningActivity.mActivityComponent!=null){+activity=topRunningActivity.mActivityComponent.flattenToShortString();+}elseif(topRunningActivity.intent!=null+&&topRunningActivity.intent.getComponent()!=null){+activity=topRunningActivity.intent.getComponent().flattenToShortString();+}++if(!pkg.equals(sLastTopPkg)||!activity.equals(sLastTopAct)){+SystemProperties.set("persist.sys.top_package",pkg);+SystemProperties.set("persist.sys.top_activity",activity);+Slog.d("topAppInfo","Top app changed: "+pkg+" / "+activity);+sLastTopPkg=pkg;+sLastTopAct=activity;+}+}+}+}catch(Exceptione){+Slog.e("topAppInfo","Failed to set top app props",e);+}+returnresult;}
后续使用发现,部分 className 太长,导致超出属性值范围,故使用 shortClassName
log
04-23 11:42:40.217 798 870 E topAppInfo: java.lang.IllegalArgumentException: value of system property 'persist.sys.top_activity' is longer than 91 bytes: com.google.android.inputmethod.pinyin/com.google.android.apps.inputmethod.pinyin.firstrun.PinyinFirstRunActivity
frameworks/base
diff--git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index20ad138..c57d56b100644---a/services/core/java/com/android/server/wm/RootWindowContainer.java+++b/services/core/java/com/android/server/wm/RootWindowContainer.java @@-2577,15+2576,23@@classRootWindowContainerextendsWindowContainer<DisplayContent>Stringactivity="unknown";if(topRunningActivity.mActivityComponent!=null){-activity=topRunningActivity.mActivityComponent.flattenToShortString();+activity=topRunningActivity.mActivityComponent.getShortClassName();}elseif(topRunningActivity.intent!=null&&topRunningActivity.intent.getComponent()!=null){-activity=topRunningActivity.intent.getComponent().flattenToShortString();+activity=topRunningActivity.intent.getComponent().getShortClassName();}if(!pkg.equals(sLastTopPkg)||!activity.equals(sLastTopAct)){-SystemProperties.set("persist.sys.top_package",pkg);-SystemProperties.set("persist.sys.top_activity",activity);+if(pkg!=null&&pkg.length()>91){+pkg=pkg.substring(0,91);+}+if(activity!=null&&activity.length()>91){+activity=activity.substring(0,91);+}++SystemProperties.set("persist.sys.top_package",pkg);+SystemProperties.set("persist.sys.top_activity",activity);+Slog.d("topAppInfo","Top app changed: "+pkg+" / "+activity);sLastTopPkg=pkg;sLastTopAct=activity;
http://www.jsqmd.com/news/722929/

相关文章:

  • 稀疏混合专家模型(MoE)负载均衡技术演进与实践
  • Sage智能体平台:从LLM到生产级自动化工作流的工程实践
  • 深圳本地特色美食推荐有哪些,去哪里吃比较正宗?
  • 2026可靠聚酯防爆箱优质厂家推荐榜 - 优质品牌商家
  • CaTok:1D因果图像标记化方法解析与应用
  • F-CoT技术:结构化提示优化大语言模型推理效率
  • DLSS Swapper终极指南:三步实现游戏DLSS智能管理,告别手动替换烦恼
  • 图像降噪算法演进史:从均值滤波到非局部均值(NL-Means),为什么说它是‘里程碑’?
  • 【PHP 8.9类型系统终极指南】:Strict Type Enforcement如何将运行时错误拦截在编译前?
  • 终极指南:如何用OnStep打造专业级智能望远镜控制系统
  • DYMO-Hair:机器人操作的头发动力学建模技术
  • 【2025最前沿】PHP 9.0原生async/await与AI流式响应融合调优:3步实现端到端P99<85ms
  • 基于MCP协议与Truelist API,为AI助手集成专业邮箱验证能力
  • 代码大语言模型训练框架与优化实践
  • NVIDIA CUDA-Q v0.8量子编程框架核心功能解析
  • 学Simulink——基于Simulink的电池热管理系统(BTMS)多目标优化​
  • Win11Debloat:Windows系统优化工具,轻松实现高效系统清理与隐私保护
  • 小型语言模型(SLMs)的优势与应用实践
  • 2026年Q2成都搬家公司选择攻略:电话与品牌双维度 - 优质品牌商家
  • LLM评估准则偏差解析与优化实践
  • Windows命令行文件定位工具extra-locate.cmd:原理、实现与效率提升实践
  • Switchyard:基于Python的用户空间网络仿真与协议测试实践指南
  • 如何用LeagueAkari智能工具集提升英雄联盟游戏效率的完整指南
  • 曾经对程序员最好的公司,倒下了
  • 扩散模型文本条件生成机制与调制引导技术解析
  • 2026年Q2成都专业小红书运营公司技术服务解析 - 优质品牌商家
  • 智能体可观测性实践:用Agent-Lens实现LLM智能体全链路追踪与评估
  • FastHMR:基于Transformer与扩散模型的高效人体网格恢复
  • 企业级IaC规范实践:iac-spec-kit如何解决基础设施即代码落地难题
  • ARM GICv3中断控制器寄存器解析与应用