編輯:關於Android編程
對於程序拋出的未被捕獲的異常,可能會導致程序異常退出,界面不友好且應記錄關鍵錯誤信息上傳至服務器。這裡主要使用UncaughtExceptionHandler
public class CrashHandler implements UncaughtExceptionHandler {
public static final String TAG = CopyOfCrashHandler.class.getSimpleName();
// 系統默認的UncaughtException處理類
private Thread.UncaughtExceptionHandler mDefaultHandler;
private static CopyOfCrashHandler instance;
private Context mContext;
private CopyOfCrashHandler() {
}
/** 獲取CrashHandler實例 ,單例模式 */
public static CopyOfCrashHandler getInstance() {
if (instance == null)
instance = new CopyOfCrashHandler();
return instance;
}
/**
* 初始化
*/
public void init(Context context) {
mContext = context;
//記錄下默認的UncaughtExceptionHandler
mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
//
Thread.setDefaultUncaughtExceptionHandler(this);
}
/**
* 當UncaughtException發生時會轉入該函數來處理
*/
@Override
public void uncaughtException(Thread thread, Throwable ex) {
if (!handleException(thread, ex) && mDefaultHandler != null) {
// 如果用戶沒有處理則讓系統默認的異常處理器來處理
mDefaultHandler.uncaughtException(thread, ex);
} else {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
}
/**
* 自定義錯誤處理,收集錯誤信息 發送錯誤報告等操作均在此完成.
*
* @param ex
* @return true:如果處理了該異常信息;否則返回false.
*/
private boolean handleException(Thread thread, Throwable ex) {
if (ex == null) {
return false;
}
StringBuffer sb = new StringBuffer();
sb.append(thread + ", Cause By:" + ex).append("\r\n\r\n");
StackTraceElement[] elements = ex.getStackTrace();
for (int i = 0; i < elements.length; i++) {
sb.append(elements[i].toString() + "\r\n");
}
//記錄下關鍵錯誤信息,可以存至本地並上傳至服務器
//LogUtil.bug(TAG, sb.toString());
//打開新Activity友好界面提示
//Util.showDialog(mContext, "時間:"+Util.formatSimpleDateAndTime(new Date()), "程序出現異常,請記錄時間並提示開發人員!");
return true;
}
}
【Android】掌握自定義LayoutManager(二) 實現流式布局
一 概述在開始之前,我想說,如果需求是每個Item寬高一樣,實現起來復雜度比每個Item寬高不一樣的,要小10+倍。然而我們今天要實現的流式布局,恰巧就是至少每個Item
Android開發本地及網絡Mp3音樂播放器(八)狀態存取與界面滑動
實現功能:退出應用時,保存歌曲位置(也就是當前是第幾首歌曲)退出應用時,保存播放模式(也就是用戶設置的是順序播放/隨機播放/單曲循環)進入應用時,讀取歌曲位置進入應用時,
Android 4.4後WebView的一些注意事項
自Android 4.4起,Android中的WebView開始基於Chromium( 這大概是因為Android部門負責人從Andy Rubin變成了Chrome部門的
android:Activity數據傳遞之對象(parcelable)
這篇文章裡面寫了用seralizable使對象序列化在Activity直之間進行傳遞seralizable是在java api中的類,而在android中也有一個類使對象