Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> Android實現異常記錄並重啟程序

Android實現異常記錄並重啟程序

編輯:Android開發教程

異常捕獲主要是在全局的Application中來處理的,Android提供了一個CrashHandler用來進行錯誤處理。

intent添加 “Intent.FLAG_ACTIVITY_NEW_TASK” 標記的原因是——Content的startActivity方法,需要開啟一個新的task。如果使用 Activity的startActivity方法,不會有任何限制,因為Activity繼承自Context,重載了startActivity方法。所以如果是context啟動Activity就需要添加這個標記。

package com.chy.global;

import java.lang.Thread.UncaughtExceptionHandler;

import android.app.Application;
import android.content.Intent;

import com.chy.activity.MainActivity;
import com.chy.utils.LogUtils;

public class CrashApplication extends Application {
	//全局錯誤信息, 當發生錯誤時去取該信息
	private static String errMsg = null;
	//異常處理器
	private CrashHandler crashHandler = null;
	
	@Override
	public void onCreate() {
		super.onCreate();
		crashHandler = new CrashHandler(this);
		Thread.setDefaultUncaughtExceptionHandler(crashHandler);
	}
	
	public static String getErrMsg() {
		return errMsg;
	}

	public static void setErrMsg(String errMsg) {
		CrashApplication.errMsg = errMsg;
	}

	class CrashHandler implements UncaughtExceptionHandler {

		private Application app = null;
		
		public CrashHandler(Application app) {
			this.app = app;
		}
		
		@Override
		public void uncaughtException(Thread thread, Throwable ex) {
			ex.printStackTrace();
			LogUtils.log(ex);
			// 此處示例發生異常後,重新啟動應用
			Intent intent = new Intent(app, MainActivity.class);
			intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			app.startActivity(intent);
			android.os.Process.killProcess(android.os.Process.myPid());
		}
	}
	
}

URL:http://www.bianceng.cn/OS/extra/201609/50437.htm

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved