Android系统Crash/ANR类型弹框
Android系统在应用发生Crash/ANR的时候,总会弹出一个提示对话框,但是现在部分客户不想要这样的对话框,要求移除。可从源码的如下入手:
//frameworks/base/services/core/java/com/android/server/am/ProcessRecord.javavoid forAllDialogs(List<? extends BaseErrorDialog> dialogs, Consumer<BaseErrorDialog> c) {for (int i = dialogs.size() - 1; i >= 0; i--) {c.accept(dialogs.get(i));}}void showCrashDialogs(AppErrorDialog.Data data) {List<Context> contexts = getDisplayContexts(false /* lastUsedOnly */);mCrashDialogs = new ArrayList<>();for (int i = contexts.size() - 1; i >= 0; i--) {final Context c = contexts.get(i);mCrashDialogs.add(new AppErrorDialog(c, mService, data));}mService.mUiHandler.post(() -> {List<AppErrorDialog> dialogs;synchronized (mService) {dialogs = mCrashDialogs;}if (dialogs != null) {if (xxxx) {++ forAllDialogs(dialogs, Dialog::dismiss);}else {forAllDialogs(dialogs, Dialog::show);}}});}void showAnrDialogs(AppNotRespondingDialog.Data data) {List<Context> contexts = getDisplayContexts(isSilentAnr() /* lastUsedOnly */);mAnrDialogs = new ArrayList<>();for (int i = contexts.size() - 1; i >= 0; i--) {final Context c = contexts.get(i);mAnrDialogs.add(new AppNotRespondingDialog(mService, c, data));}mService.mUiHandler.post(() -> {List<AppNotRespondingDialog> dialogs;synchronized (mService) {dialogs = mAnrDialogs;}if (dialogs != null) {if (xxxx) {++ forAllDialogs(dialogs, Dialog::dismiss);}else {forAllDialogs(dialogs, Dialog::show);}}});}void showViolationDialogs(AppErrorResult res) {List<Context> contexts = getDisplayContexts(false /* lastUsedOnly */);mViolationDialogs = new ArrayList<>();for (int i = contexts.size() - 1; i >= 0; i--) {final Context c = contexts.get(i);mViolationDialogs.add(new StrictModeViolationDialog(c, mService, res, ProcessRecord.this));}mService.mUiHandler.post(() -> {List<StrictModeViolationDialog> dialogs;synchronized (mService) {dialogs = mViolationDialogs;}if (dialogs != null) {if (xxxx) {++ forAllDialogs(dialogs, Dialog::dismiss);}else {forAllDialogs(dialogs, Dialog::show);}}});}void showDebugWaitingDialogs() {List<Context> contexts = getDisplayContexts(true /* lastUsedOnly */);final Context c = contexts.get(0);mWaitDialog = new AppWaitingForDebuggerDialog(mService, c, ProcessRecord.this);mService.mUiHandler.post(() -> {Dialog dialog;synchronized (mService) {dialog = mWaitDialog;}if (dialog != null) {if (xxxx) {++ dialog.dismiss();}else {dialog.show();}}});}
但是如上修改会导致CTS的测试项Fail:
run cts -m CtsWindowManagerDeviceTestCases -t android.server.wm.AnrTests#slowUiThreadWithKeyEventTriggersAnr
所以如果要过CTS的话,则必须要对如上代码进行CTS分隔。
Android系统Crash/ANR类型弹框相关推荐
- android筛选功能代码,Android中 TeaScreenPopupWindow多类型筛选弹框功能的实例代码
Github地址 YangsBryant/TeaScreenPopupWindow (Github排版比较好,建议进入这里查看详情,如果觉得好,点个star吧!) 引入module allprojec ...
- Android常见的三种弹框
Android在开发中经常会遇到有弹框的需求.经常使用的有Dialog 弹框,Window弹框,Activity伪弹框这三种. 感谢http://sigechuizi.cn/article/107 A ...
- 如何实现接口统一入口_网易考拉Android App如何实现统一弹框
摘要 在快速开发的背景下,经历了n个版本后的考拉Android App中已经存在了各种各样看似相同却各有差别的弹框样式.其中包括系统弹框和自定义弹框,并且在线上时常会出现IllegalArgument ...
- Android 系统稳定性 - ANR 解析
出处: http://rayleeya.iteye.com/blog/1955652 如果你是一个Android应用程序开发人员,你的人生中不可避免的三件事情是:死亡.缴税和ANR.这么说是夸张了,但 ...
- Android开发之Dialog对话框(弹框)工具类
公司项目里面扣出来的 我们来看下弹框效果 直接上代码 ScreenSizeUtils.java package 导入自己的包;import android.content.Context; impor ...
- android 弹出框带标题栏,Android开发靠标题栏的弹框
一.效果图 title_dialog.png 二.思路 首先它是一个弹框,只是弹框的布局做些处理,布局占满屏幕,只有需要白色的布局的背景设为白色.其他没设置背景颜色,自然用dialog的style的w ...
- deeplink跳转快应用返回出现两次系统添加桌面的弹框
现象描述 从应用市场打开快应用,点击返回时,系统添加桌面图标只出现一次弹窗.但是使用deeplink打开跳转页面,点击返回时,系统添加桌面图标会出现一次弹窗后再闪一次. 问题分析 现网正常通过Deep ...
- Android 简易的自定义确认弹框AlertDialog
使用方式/构造函数参数解释: 参数一:上下文; 参数二:标题; 参数三:内容; 参数四:确认按钮点击回调 CustomDialog(this, "清空输入", "确定要清 ...
- app android 升级提示,app版本升级原生弹框和进度提示(包含wgt升级)
更新记录 1.46(2021-03-09) 1.可修改下载提示文字; 2.可修改下载提示按钮文字; 1.45(2021-01-26) 1.修复了android自定义图片,某些图片底部出现黑线的问题 查 ...
最新文章
- 瞄准医疗数据安全四大风险 东软DBA如何绝地阻击
- Dockerfile命令
- 2019-5-30-websocket下readyState常量
- Java对象的序列化
- JS在HTML中放的位置
- 专用efi文件包_850个水利水电工程全套表格,施工方/监理方专用表,只发布两天...
- android textview 关键字高亮显示
- ES6 String和Number扩展
- FFMPEG编译ffplay
- HTMLCSS基础学习笔记8-预格式文本
- 湖南大学 离散数学 2018年期末考试 参考答案
- idea前端可视化_jsp可视化开发工具_netbeans jsp可视化_idea 可视化开发 jsp
- CentOS防火墙配置(资源)
- JAVA基础+集合+多线程+JVM
- 怎么找电脑服务器文档,怎么找到电脑的服务器地址
- matlab中load函数是什么意思,MATLAB中load函数的用法
- 如何对长期出差的员工进行“人文关怀”,前提是差旅标准仍然很抠?
- VC++的窗口句柄和窗口ID
- 使用Ilj编解码Jpeg文件
- 《西线无战事》我们才刚开始热爱生活,却不得不对一切开炮