플래시백 예외 캡처
자체적으로 작성한 애플리케이션을 전체 프로그램이 모니터링한 후 애플리케이션에서 비정상적인 상황을 모니터링하고 예외가 발생하면 현재 모델과 비정상적인 상황을 서버에 제출한다는 개념이다.
코드로 직접 이동:
public class MyApplication extends Application {
public static Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
// 全局闪退异常记录
CrashUtils crashUtils = CrashUtils.getInstance();
crashUtils.init();
}
/** 获取全局上下文 **/
public static Context getContext() {
return context;
}
}
도움말 수업:/**
* Created by Frank on 2016/12/22.
* 崩溃相关工具类
*/
public class CrashUtils implements Thread.UncaughtExceptionHandler {
private volatile static CrashUtils mInstance;
privateThread.UncaughtExceptionHandler mHandler;
private boolean mInitialized;
privateCrashUtils() {
}
/**单例**/
public static CrashUtils getInstance() {
if(mInstance==null) {
synchronized(CrashUtils.class) {
if(mInstance==null) {
mInstance=new CrashUtils();
}
}
}
return mInstance;
}
/*** 初始化{true: 成功;false: 失败}**/
public boolean init() {
if(mInitialized)return true;
mHandler= Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(this);
return mInitialized=true;
}
@Override
public void uncaughtException(Thread thread, finalThrowable throwable) {
newThread(newRunnable() {
@Override
public void run() {
CrashModel crashModel =new CrashModel();
crashModel.setDateNow(new SimpleDateFormat("yy-MM-dd HH:mm:ss",Locale.getDefault()).format(newDate()));
crashModel.setDeviceManufacturer(Build.MANUFACTURER);
crashModel.setDeviceModel(Build.MODEL);
crashModel.setAndroidVersion(Build.VERSION.RELEASE);
crashModel.setAndroidSDK(Build.VERSION.SDK_INT);
crashModel.setMessage(throwable.getMessage());
// 接下来就是调用服务端的接口去保存闪退的信息
}
}).start();
if(mHandler!=null) {
mHandler.uncaughtException(thread,throwable);
}
}
}
모델 클래스:/**
* Created by Frank on 2016/12/23.
* 全局异常捕获
*/
public class CrashModel {
/*
************* Crash Log Head ****************
Device Manufacturer: Meizu
Device Model : m3 note
Android Version : 5.1
Android SDK : 22
App VersionName : null
App VersionCode : 0
************* Crash Log Head ****************
*/
privateStringDeviceManufacturer;
privateStringDeviceModel;
privateStringAndroidVersion;
private intAndroidSDK;
privateStringAppVersionName;
private intAppVersionCode;
privateStringMessage;
privateStringDateNow;
// get,set 方法
}
구성 파일(AndroidManifest.xml)에 등록 정보 --> android:name=".MyApplication"을 추가하고 권한 부여(데이터 가져오기, SD 카드 쓰기 등)를 기억하십시오. 작은 지식 포인트 소스 코드
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.