国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - android 捕獲系統異常并上傳日志具體實現

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

2021-02-04 15:14Android開發網 Android

這篇文章介紹了android 捕獲系統異常并上傳日志具體實現,有需要的朋友可以參考一下

在做項目時,經常會把錯誤利用異常拋出去,這樣在開發時就可以通過手機拋出的異常排查錯誤。但是當程序開發完畢,版本穩定,需要上線時,為了避免拋出異常影響用戶感受,可以用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);
 }
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文字幕精品一区久久久久 | 成人a在线视频免费观看 | 国产精品v一区二区三区 | 亚洲视频精品一区 | 成人久久精品 | 中文字幕日韩在线视频 | 一区二区三区在线免费观看 | 欧美美女爱爱 | 午夜看片 | 国产99精品| 精品国产黄a∨片高清在线 久草.com | 国产女精品 | 久久午夜精品 | 欧美精品成人 | 国产精品二区三区 | 日本a视频在线观看 | 天天干天天操 | 欧美午夜一区二区三区免费大片 | 色婷婷精品久久二区二区蜜臂av | 综合五月| 国产精品初高中精品久久 | www.狠狠干 | 真实的国产乱xxxx在线 | 国产精品毛片久久久久久久 | 中文字幕一区二区三区日韩精品 | 一区二区三区四区免费看 | 超碰最新网址 | 精品久久久久久久久福利 | 99亚洲精品 | 九九热在线视频观看这里只有精品 | 欧美日韩电影 | 动漫爱爱视频 | 日韩精品影院 | 欧美日韩亚洲一区 | 亚洲精品久久久久久国产 | 成人在线视频免费观看 | 日本精品免费 | 国产激情在线观看 | 爱综合| 一本a道v久大 | 午夜激情视频在线观看 |