亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

android 捕獲系統異常并上傳日志具體實現

2020-04-11 12:03:30
字體:
來源:轉載
供稿:網友

在做項目時,經常會把錯誤利用異常拋出去,這樣在開發時就可以通過手機拋出的異常排查錯誤。但是當程序開發完畢,版本穩定,需要上線時,為了避免拋出異常影響用戶感受,可以用UncaughtExceptionHandler捕獲全局異常,對異常做出處理。比如我們可以獲取到拋出異常的時間、手機的硬件信息、錯誤的堆棧信息,然后將獲取到的所有的信息發送到服務器中,也可以發送到指定的郵件中,以便及時修改bug。

示例:

自定義異常類實現UncaughtExceptionHandler接口,當某個頁面出現異常就會調用uncaughtException這個方法,我們可以在這個方法中獲取異常信息、時間等,然后將獲取到的信息發送到我們指定的服務器

復制代碼 代碼如下:

/**
 * 自定義的 異常處理類 , 實現了 UncaughtExceptionHandler接口
 * @author Administrator
 *
 */
public class MyCrashHandler implements UncaughtExceptionHandler {
 // 需求是 整個應用程序 只有一個 MyCrash-Handler
 private static MyCrashHandler myCrashHandler ;
 private Context context;
 private DoubanService service;
 private SimpleDateFormat dataFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");

 //1.私有化構造方法
 private MyCrashHandler(){

 }

 public static synchronized MyCrashHandler getInstance(){
  if(myCrashHandler!=null){
   return myCrashHandler;
  }else {
   myCrashHandler  = new MyCrashHandler();
   return myCrashHandler;
  }
 }
 public void init(Context context,DoubanService service){
  this.context = context;
  this.service = service;
 }
 

 public void uncaughtException(Thread arg0, Throwable arg1) {
  System.out.println("程序掛掉了 ");
  // 1.獲取當前程序的版本號. 版本的id
  String versioninfo = getVersionInfo();

  // 2.獲取手機的硬件信息.
  String mobileInfo  = getMobileInfo();

  // 3.把錯誤的堆棧信息 獲取出來
  String errorinfo = getErrorInfo(arg1);

  // 4.把所有的信息 還有信息對應的時間 提交到服務器
  try {
   service.createNote(new PlainTextConstruct(dataFormat.format(new Date())),
     new PlainTextConstruct(versioninfo+mobileInfo+errorinfo), "public", "yes");
  } catch (Exception e) {
   e.printStackTrace();
  }

  //干掉當前的程序
  android.os.Process.killProcess(android.os.Process.myPid());
 }

 /**
  * 獲取錯誤的信息
  * @param arg1
  * @return
  */
 private String getErrorInfo(Throwable arg1) {
  Writer writer = new StringWriter();
  PrintWriter pw = new PrintWriter(writer);
  arg1.printStackTrace(pw);
  pw.close();
  String error= writer.toString();
  return error;
 }

 /**
  * 獲取手機的硬件信息
  * @return
  */
 private String getMobileInfo() {
  StringBuffer sb = new StringBuffer();
  //通過反射獲取系統的硬件信息
  try {

   Field[] fields = Build.class.getDeclaredFields();
   for(Field field: fields){
    //暴力反射 ,獲取私有的信息
    field.setAccessible(true);
    String name = field.getName();
    String value = field.get(null).toString();
    sb.append(name+"="+value);
    sb.append("/n");
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return sb.toString();
 }

 /**
  * 獲取手機的版本信息
  * @return
  */
 private String getVersionInfo(){
  try {
   PackageManager pm = context.getPackageManager();
    PackageInfo info =pm.getPackageInfo(context.getPackageName(), 0);
    return  info.versionName;
  } catch (Exception e) {
   e.printStackTrace();
   return "版本號未知";
  }
 }
}


創建一個Application實例將MyCrashHandler注冊到整個應用程序上,創建出服務并進行傳遞:
復制代碼 代碼如下:

/**
 * 整個(app)程序初始化之前被調用
 * @author Administrator
 *
 */
public class DoubanApplication extends Application {
  public NoteEntry entry;
 @Override
 public void onCreate() {
  super.onCreate();
  String apiKey = "0fab7f9aa21f39cd2f027ecfe65dad67";
  String secret = "87fc1c5e99bfa5b3";
  // 獲取到service
  DoubanService myService = new DoubanService("我的小豆豆", apiKey,
    secret);
  myService.setAccessToken("1fa4e5be0f808a0b5eeeb13a2e819e21", "56a622c1138dbfce");
  MyCrashHandler handler = MyCrashHandler.getInstance();
  handler.init(getApplicationContext(),myService);
  Thread.setDefaultUncaughtExceptionHandler(handler);
 }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人aa精品一区在线播放| 欧美电影免费观看| 午夜精品一区二区三区av| 成人一区二区电影| 亚洲网站视频福利| 成人日韩在线电影| 成人午夜小视频| 久久久在线视频| 亚洲国产97在线精品一区| 精品电影在线观看| 久久人91精品久久久久久不卡| 亚洲精品美女久久| 日韩高清电影免费观看完整版| 久久精品视频播放| 亚洲乱亚洲乱妇无码| 亚洲精品国产美女| 亚洲一区中文字幕在线观看| 国产日韩欧美另类| 一区二区三区久久精品| 亚洲第一区在线| 青青久久av北条麻妃海外网| 青青精品视频播放| 亚洲精美色品网站| 欧美电影免费看| 欧美韩国理论所午夜片917电影| 欧美激情性做爰免费视频| 亚洲精品丝袜日韩| 视频直播国产精品| 亚洲成人黄色在线观看| 亚洲黄色在线观看| 成人免费视频在线观看超级碰| 精品中文字幕在线观看| 色樱桃影院亚洲精品影院| 国产精品美女免费视频| 中文字幕在线看视频国产欧美| 91亚洲国产成人久久精品网站| 97香蕉超级碰碰久久免费的优势| 国产成人一区二区三区小说| 疯狂蹂躏欧美一区二区精品| 亚洲国产日韩欧美综合久久| 中文字幕欧美日韩在线| 国产精品高清在线观看| 欧美国产日本在线| 搡老女人一区二区三区视频tv| 国产在线不卡精品| 国产精品最新在线观看| 久久久久久久久久婷婷| 国产欧美久久一区二区| 国产精品久久久| 亚洲视频日韩精品| 日本午夜精品理论片a级appf发布| 国产成人精品国内自产拍免费看| 久久亚洲综合国产精品99麻豆精品福利| 97在线观看视频国产| 亚洲第一免费网站| 久久国产色av| 欧美裸体xxxx极品少妇| 久久夜色精品亚洲噜噜国产mv| 亚洲精品成a人在线观看| 成人在线视频网站| 亚洲精品视频在线播放| 欧美高清在线播放| 国产视频在线一区二区| 国产97人人超碰caoprom| 亚洲午夜av电影| 久久久久久久国产精品视频| 日韩av有码在线| 久久国产色av| 国产ts人妖一区二区三区| 久久天天躁狠狠躁夜夜躁| 成人在线观看视频网站| 91高潮在线观看| 亚洲精品免费网站| 久久中文精品视频| 亚洲欧美日本伦理| 最近2019中文字幕第三页视频| 日韩成人激情影院| 国产一区二区三区在线观看视频| 日韩美女免费线视频| 一级做a爰片久久毛片美女图片| 亚洲国产黄色片| 精品国产91乱高清在线观看| 亚洲a在线观看| 色综合久久88色综合天天看泰| 精品亚洲男同gayvideo网站| 69精品小视频| 亚洲精品美女在线| 国产成+人+综合+亚洲欧美丁香花| 亚洲第一区中文字幕| 久久视频国产精品免费视频在线| 91精品国产综合久久香蕉最新版| 精品国产欧美一区二区三区成人| 亚洲激情电影中文字幕| 亚洲欧美自拍一区| 国产精品视频中文字幕91| 午夜精品一区二区三区视频免费看| 午夜精品国产精品大乳美女| 欧美—级a级欧美特级ar全黄| 清纯唯美日韩制服另类| 精品亚洲男同gayvideo网站| 国产午夜精品一区理论片飘花| 丝袜亚洲另类欧美重口| 日韩免费精品视频| 国产精品福利网站| 欧美日在线观看| 91久久在线视频| 亚洲精品久久久久| 国产情人节一区| 亚洲bt欧美bt日本bt| 日韩av在线网站| 日韩在线视频播放| 亚洲精品一区久久久久久| 国产精品第一视频| 久久精品欧美视频| 亚洲人成网站999久久久综合| 亚洲一区二区三区在线视频| 国产成人精彩在线视频九色| 午夜精品一区二区三区视频免费看| 日韩av电影国产| 亚洲视频电影图片偷拍一区| 亚洲国产婷婷香蕉久久久久久| 欧美日韩另类在线| 久久精品国产免费观看| 欧美高跟鞋交xxxxxhd| 亚洲风情亚aⅴ在线发布| 亚洲a区在线视频| 日韩高清不卡av| 亚洲在线视频观看| 98视频在线噜噜噜国产| 日韩三级影视基地| 日本亚洲欧美三级| 国产精品日韩精品| 精品高清一区二区三区| 色悠久久久久综合先锋影音下载| 欧美老女人xx| 久久亚洲一区二区三区四区五区高| 色视频www在线播放国产成人| 亚洲午夜精品视频| 国产日韩在线一区| 精品亚洲精品福利线在观看| 日韩av不卡在线| 日韩综合视频在线观看| 欧美精品xxx| 最近2019中文字幕在线高清| 成人免费视频网址| 欧美性受xxxx黑人猛交| 亚洲欧美日韩一区二区在线| 久久精品国产清自在天天线| 日韩欧美在线视频免费观看| 国产精品午夜一区二区欲梦| 成人羞羞国产免费| 久久久国产视频91| 日韩欧美在线免费| 国产精品美女久久| 欧美激情视频网| 成人免费黄色网| 日韩视频免费观看| 国产一区二区三区在线看| 中文字幕成人在线| 久久久久久com| 欧美激情乱人伦一区| 久久99热这里只有精品国产| 日韩精品中文字| 国产精品久久久久久久久久免费|