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类型弹框相关推荐

  1. android筛选功能代码,Android中 TeaScreenPopupWindow多类型筛选弹框功能的实例代码

    Github地址 YangsBryant/TeaScreenPopupWindow (Github排版比较好,建议进入这里查看详情,如果觉得好,点个star吧!) 引入module allprojec ...

  2. Android常见的三种弹框

    Android在开发中经常会遇到有弹框的需求.经常使用的有Dialog 弹框,Window弹框,Activity伪弹框这三种. 感谢http://sigechuizi.cn/article/107 A ...

  3. 如何实现接口统一入口_网易考拉Android App如何实现统一弹框

    摘要 在快速开发的背景下,经历了n个版本后的考拉Android App中已经存在了各种各样看似相同却各有差别的弹框样式.其中包括系统弹框和自定义弹框,并且在线上时常会出现IllegalArgument ...

  4. Android 系统稳定性 - ANR 解析

    出处: http://rayleeya.iteye.com/blog/1955652 如果你是一个Android应用程序开发人员,你的人生中不可避免的三件事情是:死亡.缴税和ANR.这么说是夸张了,但 ...

  5. Android开发之Dialog对话框(弹框)工具类

    公司项目里面扣出来的 我们来看下弹框效果 直接上代码 ScreenSizeUtils.java package 导入自己的包;import android.content.Context; impor ...

  6. android 弹出框带标题栏,Android开发靠标题栏的弹框

    一.效果图 title_dialog.png 二.思路 首先它是一个弹框,只是弹框的布局做些处理,布局占满屏幕,只有需要白色的布局的背景设为白色.其他没设置背景颜色,自然用dialog的style的w ...

  7. deeplink跳转快应用返回出现两次系统添加桌面的弹框

    现象描述 从应用市场打开快应用,点击返回时,系统添加桌面图标只出现一次弹窗.但是使用deeplink打开跳转页面,点击返回时,系统添加桌面图标会出现一次弹窗后再闪一次. 问题分析 现网正常通过Deep ...

  8. Android 简易的自定义确认弹框AlertDialog

    使用方式/构造函数参数解释: 参数一:上下文; 参数二:标题; 参数三:内容; 参数四:确认按钮点击回调 CustomDialog(this, "清空输入", "确定要清 ...

  9. app android 升级提示,app版本升级原生弹框和进度提示(包含wgt升级)

    更新记录 1.46(2021-03-09) 1.可修改下载提示文字; 2.可修改下载提示按钮文字; 1.45(2021-01-26) 1.修复了android自定义图片,某些图片底部出现黑线的问题 查 ...

最新文章

  1. 瞄准医疗数据安全四大风险 东软DBA如何绝地阻击
  2. Dockerfile命令
  3. 2019-5-30-websocket下readyState常量
  4. Java对象的序列化
  5. JS在HTML中放的位置
  6. 专用efi文件包_850个水利水电工程全套表格,施工方/监理方专用表,只发布两天...
  7. android textview 关键字高亮显示
  8. ES6 String和Number扩展
  9. FFMPEG编译ffplay
  10. HTMLCSS基础学习笔记8-预格式文本
  11. 湖南大学 离散数学 2018年期末考试 参考答案
  12. idea前端可视化_jsp可视化开发工具_netbeans jsp可视化_idea 可视化开发 jsp
  13. CentOS防火墙配置(资源)
  14. JAVA基础+集合+多线程+JVM
  15. 怎么找电脑服务器文档,怎么找到电脑的服务器地址
  16. matlab中load函数是什么意思,MATLAB中load函数的用法
  17. 如何对长期出差的员工进行“人文关怀”,前提是差旅标准仍然很抠?
  18. VC++的窗口句柄和窗口ID
  19. 使用Ilj编解码Jpeg文件
  20. 《西线无战事》我们才刚开始热爱生活,却不得不对一切开炮

热门文章

  1. python经典面试题100例 面试宝典
  2. Oracle中的wn_concat()函数
  3. 中国第三代半导体名单!
  4. 关于 A/B 测试那些事儿
  5. Git入门到精通(大全)
  6. 取出一个字节(byte)中的每一位(bit)
  7. Android录音-音频基础知识
  8. 【ps】如何编辑*.psd文件中的已有文字
  9. JS-BOM对象概叙
  10. [转载]人在外企,45岁以后漂向哪里?