位置: 编程技术 - 正文

Android自定义捕获Application全局异常(android 自定义)

编辑:rootadmin

推荐整理分享Android自定义捕获Application全局异常(android 自定义),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android自定义loading,android 自定义,android 自定义view三个方法,android自定义spinner,android 自定义,android 自定义,android自定义loading,android 自定义,内容如对您有帮助,希望把文章链接给更多的朋友!

我们先建立一个crash项目,项目结构如图:

在MainActivity.java代码中,代码是这样写的: [java] view plaincopy package com.scott.crash;

import android.app.Activity; import android.os.Bundle;

public class MainActivity extends Activity {

} 我们在这里故意制造了一个潜在的运行期异常,当我们运行程序时就会出现以下界面:

Android自定义捕获Application全局异常(android 自定义)

遇到软件没有捕获的异常之后,系统会弹出这个默认的强制关闭对话框。 我们当然不希望用户看到这种现象,简直是对用户心灵上的打击,而且对我们的bug的修复也是毫无帮助的。我们需要的是软件有一个全局的异常捕获器,当出现一个我们没有发现的异常时,捕获这个异常,并且将异常信息记录下来,上传到服务器公开发这分析出现异常的具体原因。 接下来我们就来实现这一机制,不过首先我们还是来了解以下两个类:android.app.Application和java.lang.Thread.UncaughtExceptionHandler。 Application:用来管理应用程序的全局状态。在应用程序启动时Application会首先创建,然后才会根据情况(Intent)来启动相应的Activity和Service。本示例中将在自定义加强版的Application中注册未捕获异常处理器。 Thread.UncaughtExceptionHandler:线程未捕获异常处理器,用来处理未捕获异常。如果程序出现了未捕获异常,默认会弹出系统中强制关闭对话框。我们需要实现此接口,并注册为程序中默认未捕获异常处理。这样当未捕获异常发生时,就可以做一些个性化的异常处理操作。 大家刚才在项目的结构图中看到的CrashHandler.java实现了Thread.UncaughtExceptionHandler,使我们用来处理未捕获异常的主要成员,代码如下: [java] view plaincopy package com.scott.crash;

import java.io.File; import java.io.FileOutputStream; import java.io.PrintWriter; import java.io.StringWriter; import java.io.Writer; import java.lang.Thread.UncaughtExceptionHandler; import java.lang.reflect.Field; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map;

import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Build; import android.os.Environment; import android.os.Looper; import android.util.Log; import android.widget.Toast;

/** * UncaughtException处理类,当程序发生Uncaught异常的时候,有该类来接管程序,并记录发送错误报告. * * @author user * */ public class CrashHandler implements UncaughtExceptionHandler {

} 在收集异常信息时,朋友们也可以使用Properties,因为Properties有一个很便捷的方法properties.store(OutputStream out, String comments),用来将Properties实例中的键值对外输到输出流中,但是在使用的过程中发现生成的文件中异常信息打印在同一行,看起来极为费劲,所以换成Map来存放这些信息,然后生成文件时稍加了些操作。 完成这个CrashHandler后,我们需要在一个Application环境中让其运行,为此,我们继承android.app.Application,添加自己的代码,CrashApplication.java代码如下: [java] view plaincopy package com.scott.crash;

import android.app.Application;

public class CrashApplication extends Application { @Override public void onCreate() { super.onCreate(); CrashHandler crashHandler = CrashHandler.getInstance(); crashHandler.init(getApplicationContext()); } } 最后,为了让我们的CrashApplication取代android.app.Application的地位,在我们的代码中生效,我们需要修改AndroidManifest.xml: [html] view plaincopy

Android快速自定义控件+实战演示(三)完整键盘和组合回调! 此文接着《Android快速自定义控件+实战演示(二)组合自定义view+回调》继续讲解。这一节会提供的知识点:1.如何把之前做好的单一控件组合成一个完

Android线程交互(Handler+Thread 和 AsyncTask) 为什么需要线程假设需要开发一个联网应用程序,需要从一个网址抓取网页内容,这里读取的网页地址是笔者在本地机器上自己建立的服务器地址。当

Android listView 动态加载数据,下拉加载数据,上拉加载数据 先上效果图本图为上拉到顶部实现数据加载下图为下拉到底部,实现数据加载下面展示代码,其中用到了三方开源控件pulltoRefresh,朋友们可以在网上自行

标签: android 自定义

本文链接地址:https://www.jiuchutong.com/biancheng/371028.html 转载请保留说明!

上一篇:在布局中限制TextView是否换行和最大字数(在布局中使用选定的比例)

下一篇:Android快速自定义控件+实战演示(三)完整键盘和组合回调!(android 自定义)

  • 劳务公司的税率一般是多少
  • 增值税的特点是实行
  • 增值税怎么记
  • 医疗保险单位和个人交的区别
  • 小规模纳税人企业所得税怎么计算
  • 城镇土地使用税纳税义务发生时间
  • 利润表中第3栏营业税金及附加等于什么
  • 土地返还款属于政府补助吗
  • 偶然所得个税怎么计算公式
  • 车辆抵押贷款怎么做
  • 过期的食品退回去厂里怎么处理
  • 低值易耗品摊销借贷方向
  • 材料折扣率
  • 土地税退税做什么分录
  • 结转已完工产品会计分录
  • 补记以前年度折旧
  • 应交增值税账面数
  • 学校需要开发票吗,学校的纳税人识别号是什么?
  • 如何对投资收益进行会计处理
  • 所得税年报流程
  • 客户退货发到付怎么办
  • 进项构成比例是啥
  • 公司打白条
  • 在win7中创建快捷方式可以创建什么
  • 会计分录是怎么样的
  • php中strrev
  • 物流公司的收入怎么记账
  • 操作系统的类型和比较
  • 收入汇缴账户可以冻结吗
  • vue错误提示
  • 应收的罚款收入计入什么科目
  • Treetop walkway in Hainich National Park, Thuringia, Germany (© mauritius images GmbH/Alamy)
  • php控制器是用来做什么的
  • laravel sqlserver
  • php中的表达式简写是什么
  • 蓝桥杯大赛官网试题
  • 机器学习——BP神经网络详细介绍及案例Python代码实现
  • 借入长期借款的利息
  • 将本月发生的制造费用总额按生产工人
  • 员工的工资属于什么资产
  • u8存货核算对方科目怎么设置
  • 关于进项票少的解决方案
  • 进口产品销售需要交税吗
  • mysql怎么实现原子性
  • 什么是金税四期什么时候上线
  • 一般纳税人企业所得税怎么征收
  • 个税起征点调整至10000
  • 给员工打了备用金后归还怎么做账
  • 建筑劳务公司的会计账务处理
  • 在建工程待摊支出结转
  • 2017年6月,小张买了一台笔记本电脑,其主要硬件参数
  • 采购未到票如何入账
  • 买一件商品赠送两个商品
  • 购入库存商品会计摘要怎么写
  • 债权投资的交易费用计入成本还是利息调整
  • 香港的收据可以作为报销凭证吗
  • 汇算期间取得以下收入
  • 其他业务收入冲减应付账款
  • 待处理财产损益是备抵类科目吗
  • 个体工商户在什么情况下需要纳税
  • 商业银行的固定资产
  • sqlserver日志已满
  • win10检查文件完整性
  • xp如何把ie浏览器设置为默认浏览器
  • 如何将苹果手机复制
  • freebsd使用
  • ubuntu 18.04 16.04
  • frameworkservic.exe是什么进程 有什么作用 frameworkservic进程查询
  • canvas动态绘制简单gif
  • node.js模块化
  • linux查看目录的权限的命令
  • python获取当前日期的前一天
  • arcgis engine+c#实例开发教程
  • [置顶]电影名字《收件人不详》
  • JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
  • 有哪些推荐阅读的书
  • android 获取时区
  • 天津税务局发票查询
  • 税控盘解除风险
  • 豫麦336
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设