前一篇文章:开发一个好项目:八、创建view 框架地址 dileber android框架 希望大家能多多star一下
构造自己android奔溃文件日志记录。你的项目如果继承自dileber框架,你的项目将具有自动记录奔溃日志的功能。
奔溃日志的代码类为 AndroidCrash.java
public class AndroidCrash{
private static AndroidCrash instance = null;
private Thread.UncaughtExceptionHandler mDefaultCrashHandler;
private AndroidCrash(){
// get default
mDefaultCrashHandler = Thread.getDefaultUncaughtExceptionHandler();
// install
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, final Throwable ex) {
// save log
saveException(ex, true);
showToast( "很抱歉,程序发生异常,即将推出.");
try {
Thread.sleep(3500);
} catch (InterruptedException e) {
e.printStackTrace();
}
// uncaught
mDefaultCrashHandler.uncaughtException(thread, ex);
}
});
}
public static AndroidCrash getInstance() {
if (instance == null) {
instance = new AndroidCrash();
}
return instance;
}
public final void saveException(Throwable ex, boolean uncaught) {
CrashSaver.save(SApplication.getAppContext(), ex, uncaught);
}
public void setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler handler) {
if (handler != null) {
this.mDefaultCrashHandler = handler;
}
}
/**
* 进行弹出框提示
*
* @param msg
*/
private void showToast( final String msg) {
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
UUi.toast(ActivityManager.getCurrentActivity(), msg, Toast.LENGTH_SHORT);
Looper.loop();
}
}).start();
}
}
该类具有自动记录奔溃日志,在崩溃前一秒会进行友好提示。
记录的日志目录位于sd卡目录的“ Android/data/你的包名/log”方便用户进行清理缓存,
记录的文件可以用于上传奔溃日志等等操作:
如下奔溃日志
count: 3
time: 2017-02-24 11:50:44
device: Xiaomi MI 4LTE
android: 6.0.1
system: MMB29M
battery: 100 %
rooted: no
ram: 27.0% [1.00 GB]
disk: 32.0% [12.00 GB]
ver: 1 caught: no
network: WIFI
java.lang.NullPointerException: Attempt to invoke interface method ...