<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      安卓筆記俠

      專注安卓開發

      導航

      監聽軟件異常崩潰并且保持日志--CrashHandler編寫自己的異常捕獲類

        平時寫代碼,我們可能會拋出各種異常,這些異常有些是我們測試過程中發現進行解決的,但是也有一些異常是我們未知的,不論是代碼的邏輯問題還是Android本身底層的一些bug,我們都需要及時了解并進行解決。當用戶在使用app出現崩潰現象時我們需要知道是什么原因,并將原因記錄下來上到服務器,這樣以后我們就可以知道具體是什么原因了

      CrashHandler類--用于記錄crash原因保存到sd卡中。

       1 public class CrashHandler implements Thread.UncaughtExceptionHandler {
       2     private static final String TAG = "CrashHandler";
       3     private static final boolean DEBUG = true;
       4     //文件路徑
       5     private static final String PATH = Environment.getExternalStorageDirectory().getPath() +File.separator+ "crash";
       6     private static final String FILE_NAME = "crash";
       7     private static final String FILE_NAME_SUFEIX = ".trace";
       8     private static Thread.UncaughtExceptionHandler mDefaultCrashHandler;
       9     private static CrashHandler mCrashHandler = new CrashHandler();
      10     private Context mContext;
      11 
      12     private CrashHandler() {
      13     }
      14 
      15     public static CrashHandler getInstance() {
      16         return mCrashHandler;
      17     }
      18 
      19     public void init(Context context) {
      20         mDefaultCrashHandler = Thread.getDefaultUncaughtExceptionHandler();
      21         Thread.setDefaultUncaughtExceptionHandler(this);
      22         mContext = context.getApplicationContext();
      23     }
      24 
      25     @Override
      26     public void uncaughtException(Thread thread, Throwable ex) {
      27         try {
      28             //將文件寫入sd卡
      29             writeToSDcard(ex);
      30             //寫入后在這里可以進行上傳操作
      31         } catch (IOException e) {
      32             e.printStackTrace();
      33         } catch (PackageManager.NameNotFoundException e) {
      34             e.printStackTrace();
      35         }
      36         ex.printStackTrace();
      37         //如果系統提供了默認異常處理就交給系統進行處理,否則自己進行處理。
      38         if (mDefaultCrashHandler != null) {
      39             mDefaultCrashHandler.uncaughtException(thread, ex);
      40         } else {
      41             Process.killProcess(Process.myPid());
      42         }
      43     }
      44 
      45     //將異常寫入文件
      46     private void writeToSDcard(Throwable ex) throws IOException, PackageManager.NameNotFoundException {
      47         //如果沒有SD卡,直接返回
      48         if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
      49             return;
      50         }
      51         File filedir = new File(PATH);
      52         if (!filedir.exists()) {
      53             filedir.mkdirs();
      54         }
      55         long currenttime = System.currentTimeMillis();
      56         String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(currenttime));
      57 
      58         File exfile = new File(PATH +File.separator+FILE_NAME+time + FILE_NAME_SUFEIX);
      59         PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(exfile)));
      60         Log.e("錯誤日志文件路徑",""+exfile.getAbsolutePath());
      61         pw.println(time);
      62         PackageManager pm = mContext.getPackageManager();
      63         PackageInfo pi = pm.getPackageInfo(mContext.getPackageName(), PackageManager.GET_ACTIVITIES);
      64         //當前版本號
      65         pw.println("App Version:" + pi.versionName + "_" + pi.versionCode);
      66         //當前系統
      67         pw.println("OS version:" + Build.VERSION.RELEASE + "_" + Build.VERSION.SDK_INT);
      68         //制造商
      69         pw.println("Vendor:" + Build.MANUFACTURER);
      70         //手機型號
      71         pw.println("Model:" + Build.MODEL);
      72         //CPU架構
      73         pw.println("CPU ABI:" + Build.CPU_ABI);
      74 
      75         ex.printStackTrace(pw);
      76         pw.close();
      77 
      78     }
      79 
      80 }

      調用

      public class BaseApplication extends Application {
          @Override
          public void onCreate() {
              super.onCreate();
              CrashHandler crashHandler=CrashHandler.getInstance();
              crashHandler.init(this);
          }
      }

      測試

      mButton.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
                      throw  new RuntimeException("拋出一個異常");
                  }
      });

      最后記得添加文件權限,并調用BaseApplication

       

      發送給后臺有點類似與用戶注冊

       

      友情鏈接:

      http://blog.csdn.net/a2241076850/article/details/54944667

      http://blog.csdn.net/i_lovefish/article/details/17719081

      posted on 2016-11-07 00:30  安卓筆記俠  閱讀(651)  評論(1)    收藏  舉報

      主站蜘蛛池模板: 国产一区二区在线影院| 亚洲av无码精品色午夜蛋壳| 久久综合久中文字幕青草| 午夜福利影院不卡影院| 日本高清一区二区三| 亚洲鸥美日韩精品久久| 国产一区二区三区综合视频 | 国产一卡2卡三卡4卡免费网站| 搜索| 国产果冻豆传媒麻婆精东| 99re在线视频观看| 成全世界免费高清观看| 国产精品亚洲二区在线播放| 内射极品少妇xxxxxhd| 色伦专区97中文字幕| 欧美乱码卡一卡二卡四卡免费| 长腿校花无力呻吟娇喘| 亚洲高清aⅴ日本欧美视频| 色综合久久中文综合久久激情 | 中文字幕无码av不卡一区| 国产精品视频一区二区噜| 国产喷水1区2区3区咪咪爱AV| 日日噜噜大屁股熟妇| 亚洲国产日韩一区三区| 国产精品多p对白交换绿帽| 国产精品国产三级国产专业| 国产欧美综合在线观看第十页 | 人妻丰满熟妇av无码区不卡| 精品三级在线| 亚洲av永久无码精品水牛影视| 亚洲肥老太bbw中国熟女| 国产亚洲av手机在线观看| 日韩高清不卡一区二区三区| 亚洲熟妇久久精品| 久久精品国产九一九九九| 欧美黑人大战白嫩在线| 成人性生交大片免费看r链接| 伊人av超碰伊人久久久| 水蜜桃精品综合视频在线| 国产特级毛片AAAAAA视频| 天堂8中文在线最新版在线|