編輯:關於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; } }
一 概述在開始之前,我想說,如果需求是每個Item寬高一樣,實現起來復雜度比每個Item寬高不一樣的,要小10+倍。然而我們今天要實現的流式布局,恰巧就是至少每個Item
實現功能:退出應用時,保存歌曲位置(也就是當前是第幾首歌曲)退出應用時,保存播放模式(也就是用戶設置的是順序播放/隨機播放/單曲循環)進入應用時,讀取歌曲位置進入應用時,
自Android 4.4起,Android中的WebView開始基於Chromium( 這大概是因為Android部門負責人從Andy Rubin變成了Chrome部門的
這篇文章裡面寫了用seralizable使對象序列化在Activity直之間進行傳遞seralizable是在java api中的類,而在android中也有一個類使對象