android捕获全局异常,CrashHandler
16lz
2021-01-23
原文地址:http://blog.csdn.net/luck_apple/article/details/7768064
- packagecom.numob.david.util;
- importjava.io.File;
- importjava.io.FileWriter;
- importjava.io.IOException;
- importjava.lang.Thread.UncaughtExceptionHandler;
- importjava.util.Date;
- importandroid.os.Environment;
- importandroid.util.Log;
- /**
- *全局处理异常.
- *
- */
- publicclassCrashHandlerimplementsUncaughtExceptionHandler{
- /**CrashHandler实例*/
- privatestaticCrashHandlerinstance;
- /**获取CrashHandler实例,单例模式*/
- publicstaticCrashHandlergetInstance(){
- if(instance==null){
- instance=newCrashHandler();
- }
- returninstance;
- }
- @Override
- publicvoiduncaughtException(Threadarg0,Throwablearg1){
- //ScreenManager.getScreenManager().popActivity(Pay.activity);
- //arg0.stop();
- //arg0.destroy();
- Stringlogdir;
- if(Environment.getExternalStorageDirectory()!=null){
- logdir=Environment.getExternalStorageDirectory().getAbsolutePath()
- +File.separator+"snda"+File.separator+"log";
- Filefile=newFile(logdir);
- booleanmkSuccess;
- if(!file.isDirectory()){
- mkSuccess=file.mkdirs();
- if(!mkSuccess){
- mkSuccess=file.mkdirs();
- }
- }
- try{
- FileWriterfw=newFileWriter(logdir+File.separator+"error.log",true);
- fw.write(newDate()+"\n");
- StackTraceElement[]stackTrace=arg1.getStackTrace();
- fw.write(arg1.getMessage()+"\n");
- for(inti=0;i<stackTrace.length;i++){
- fw.write("file:"+stackTrace[i].getFileName()+"class:"+stackTrace[i].getClassName()
- +"method:"+stackTrace[i].getMethodName()+"line:"+stackTrace[i].getLineNumber()
- +"\n");
- }
- fw.write("\n");
- fw.close();
- }catch(IOExceptione){
- Log.e("crashhandler","loadfilefailed...",e.getCause());
- }
- }
- arg1.printStackTrace();
- android.os.Process.killProcess(android.os.Process.myPid());
- }
- }
Activity或是Application中加入这样的代码:
- CrashHandlercrashHandler=CrashHandler.getInstance();
- crashHandler.init(getApplicationContext());
今天只做简单介绍了。
更多相关文章
- Android编程学习之抽象类AbsListView用法实例分析
- Android app处理全局exception
- Android内容提供者ContentProvider用法实例分析
- Android UI组件开源实例(二)
- Android精灵动画用法实例
- Android 总结:自定义键盘实现原理和三种实例详解
- android之BroadcastReceiver实例
- Android 正则表达式实例
- Android 深入研究SQLite实例(一) 之 业务类 sqlite版本管理类