在寫模塊的時候可能某一個模塊會出現(xiàn)一點就奔潰的bug,但是在測試的時候又沒有測試到這個bug,如果直接丟給用戶使用椰憋,那么用戶就會直接看到錯誤的打印,所以要對它進(jìn)行一個整體的處理魏割,這里就要借助一個類 這個類叫做Application,你的所有activity 服務(wù)...都包含在application里廊勃,一旦你的代碼出現(xiàn)異常,application是可以捕獲到的搬男,清單文件中的application指向的類就是 Application 那么我們要做的就是繼承改類 我們要做的就是不要讓它用默認(rèn)的application了而是用我們繼承的application
Application:
編寫一個類繼承至Application,然后用于捕獲全局的異常的實例
<pre>
package com.itheima.mobilesafe74.global;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.lang.Thread.UncaughtExceptionHandler;
import android.app.Application;
import android.os.Environment;
import android.util.Log;
public class MyApplication extends Application {
protected static final String tag = "MyApplication";
@Override
public void onCreate() {
super.onCreate();
//捕獲全局(應(yīng)用任意模塊)異常
//設(shè)置默認(rèn)的沒有捕獲的異常處理起來
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
//在獲取到了未捕獲的異常后,處理的方法
ex.printStackTrace();
Log.i(tag, "捕獲到了一個程序的異常");
//將捕獲的異常存儲到sd卡中
String path = Environment.getExternalStorageDirectory().getAbsoluteFile()+File.separator+"error74.log";
File file = new File(path);
try {
PrintWriter printWriter = new PrintWriter(file);
ex.printStackTrace(printWriter);
printWriter.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//上傳公司的服務(wù)器
//....
//結(jié)束應(yīng)用 閃退的代碼
System.exit(0);
}
});
}
}
</pre>
現(xiàn)在要拿我們自定義的這個application 作為應(yīng)用要使用的application
要怎么搞拣展?
現(xiàn)在我們使用的是系統(tǒng)的Application 我們不要系統(tǒng)的Application 而是用我們自己定義的application 那么應(yīng)該怎么做呢?
未捕獲到異常應(yīng)用會彈出錯誤的對話框
將捕獲到的異常存儲到sd卡中