第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Android將應(yīng)用程序的崩潰信息如何保存到本地文件,并上傳至服務(wù)器

標(biāo)簽:
Android

导语:最近实在是太忙了,没有怎么更新公众号,也没有怎么认真去写一些内容,在这里先给关注我的朋友说一声抱歉,可能在接下来的一段时间,还是很忙,但是我会争取抽空多分享一下技术文章,给大家看,共同进步,也希望有能力的人可以一起出来分享。


我们在做应用开发的时候,需要程序的崩溃信息,来进行bug的修复和版本的更新,每一个应用程序都会有bug,所以都需要在后台纪录这些bug日志,然后上传到服务器,让程序员看,并进行修复。现在也有很多第三方的jar包能实现这种功能,比如友盟统计等,但是终究不如自己写的方便。好了,废话不多说了,现在正是开讲。


第一步:先了解一下两个类Application和UncaughtExceptionHandler

Application:用来管理应用程序的全局状态。在应用程序启动时Application会首先创建,然后才会根据情况来启动相应的Activity和Service。对于未捕获异常的处理器我们也可以在这里实现。

UncaughtExceptionHandler:线程未捕获异常处理器,用来处理未捕获异常。如果程序出现了未捕获异常,默认会弹出系统中强制关闭对话框。我们需要实现此接口,并注册为程序中默认未捕获异常处理。这样当未捕获异常发生时,就可以做一些个性化的异常处理操作。


第二步:线程未捕获异常接口的实现
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.lang.Thread.UncaughtExceptionHandler;
public class CrashHandler implements UncaughtExceptionHandler{
   private static CrashHandler crashHandler;
   
   @Override
   public void uncaughtException(Thread thread, Throwable ex) {
       // TODO Auto-generated method stub
       if (crashHandler != null) {
           try {
               //将crash log写入文件
               FileOutputStream fileOutputStream = new FileOutputStream("/mnt/sdcard/crash_log.txt", true);
               PrintStream printStream = new PrintStream(fileOutputStream);
               ex.printStackTrace(printStream);
               printStream.flush();
               printStream.close();
               fileOutputStream.close();
           } catch (FileNotFoundException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
       }
   }
   
   //设置默认处理器
   public void init() {
       Thread.setDefaultUncaughtExceptionHandler(this);
   }
   
   private CrashHandler() {}
   
   //单例
   public static CrashHandler instance() {
       if (crashHandler == null) {
           synchronized (crashHandler) {
               crashHandler = new CrashHandler();
           }
       }
       return crashHandler;
   }
}

第三步:在application中调用异常的捕获功能

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

第四步:application在清单文件中的注册

application和activity一样都需要在清单文件中进行注册,只不过我们在建项目的时候,开发工具会在项目中自动注册application,而我们自己定义的则需要自己去手动把默认的给替换掉。

<application android:name=".MainApplication"  
      android:icon="@drawable/ic_launcher"  
      android:label="@string/app_name"  
      android:theme="@style/AppTheme" >  
 ...  
</application>
讲到这里就介绍完了,如果你把这些代码插入进去了,等你程序再崩溃的时候,就会给你自动记录了,当然上面讲的这些只是给你记录到本地,并存放成文件了,如果想上传到服务器,还请同学们自己动手,把文件进行上传吧!上传文件到服务器我想同学们应该都会吧!

原文链接:http://www.apkbus.com/blog-47151-59400.html

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消