最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android application捕獲崩潰異常怎么辦

 更新時間:2017年06月09日 11:49:49   作者:zheyiw  
Android application捕獲崩潰異常怎么辦?這篇文章主要為大家詳細介紹了Android application捕獲崩潰異常的相關資料

Android application捕獲崩潰異常怎么辦?

通用 application
1、收集所有 avtivity 用于徹底退出應用
2、捕獲崩潰異常,保存錯誤日志,并重啟應用

public class HKBaseApplication extends Application {
 // activity對象列表,用于activity統(tǒng)一管理
 private List<Activity> activityList;
 // 異常捕獲
 protected boolean isNeedCaughtExeption = true;// 是否捕獲未知異常
 private PendingIntent restartIntent;
 private MyUncaughtExceptionHandler uncaughtExceptionHandler;
 private String packgeName;

 @Override
 public void onCreate() {
 super.onCreate();

 activityList = new ArrayList<Activity>();
 packgeName = getPackageName();

 if (isNeedCaughtExeption) {
  cauchException();
 }
 }

 // -------------------異常捕獲-----捕獲異常后重啟系統(tǒng)-----------------//

 private void cauchException() {
 Intent intent = new Intent();
 // 參數(shù)1:包名,參數(shù)2:程序入口的activity
 intent.setClassName(packgeName, packgeName + ".LoginActivity");
 restartIntent = PendingIntent.getActivity(getApplicationContext(), -1, intent,
  Intent.FLAG_ACTIVITY_NEW_TASK);

 // 程序崩潰時觸發(fā)線程
 uncaughtExceptionHandler = new MyUncaughtExceptionHandler();
 Thread.setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler);
 }

 // 創(chuàng)建服務用于捕獲崩潰異常
 private class MyUncaughtExceptionHandler implements UncaughtExceptionHandler {
 @Override
 public void uncaughtException(Thread thread, Throwable ex) {
  // 保存錯誤日志
  saveCatchInfo2File(ex);

  // 1秒鐘后重啟應用
  AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
  mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 1000, restartIntent);

  // 關閉當前應用
  finishAllActivity();
  finishProgram();
 }
 };

 /**
 * 保存錯誤信息到文件中
 * 
 * @return 返回文件名稱
 */
 private String saveCatchInfo2File(Throwable ex) {
 Writer writer = new StringWriter();
 PrintWriter printWriter = new PrintWriter(writer);
 ex.printStackTrace(printWriter);
 Throwable cause = ex.getCause();
 while (cause != null) {
  cause.printStackTrace(printWriter);
  cause = cause.getCause();
 }
 printWriter.close();
 String sb = writer.toString();
 try {
  DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
  String time = formatter.format(new Date());
  String fileName = time + ".txt";
  System.out.println("fileName:" + fileName);
  if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
  String filePath = Environment.getExternalStorageDirectory() + "/HKDownload/" + packgeName
   + "/crash/";
  File dir = new File(filePath);
  if (!dir.exists()) {
   if (!dir.mkdirs()) {
   // 創(chuàng)建目錄失敗: 一般是因為SD卡被拔出了
   return "";
   }
  }
  System.out.println("filePath + fileName:" + filePath + fileName);
  FileOutputStream fos = new FileOutputStream(filePath + fileName);
  fos.write(sb.getBytes());
  fos.close();
  //文件保存完了之后,在應用下次啟動的時候去檢查錯誤日志,發(fā)現(xiàn)新的錯誤日志,就發(fā)送給開發(fā)者
  }
  return fileName;
 } catch (Exception e) {
  System.out.println("an error occured while writing file..." + e.getMessage());
 }
 return null;
 }

 // ------------------------------activity管理-----------------------//

 // activity管理:從列表中移除activity
 public void removeActivity(Activity activity) {
 activityList.remove(activity);
 }

 // activity管理:添加activity到列表
 public void addActivity(Activity activity) {
 activityList.add(activity);
 }

 // activity管理:結(jié)束所有activity
 public void finishAllActivity() {
 for (Activity activity : activityList) {
  if (null != activity) {
  activity.finish();
  }
 }
 }

 // 結(jié)束線程,一般與finishAllActivity()一起使用
 // 例如: finishAllActivity;finishProgram();
 public void finishProgram() {
 android.os.Process.killProcess(android.os.Process.myPid());
 }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android開發(fā)之計算器GridLayout布局實現(xiàn)方法示例

    Android開發(fā)之計算器GridLayout布局實現(xiàn)方法示例

    這篇文章主要介紹了Android開發(fā)之計算器GridLayout布局實現(xiàn)方法,結(jié)合實例形式分析了Android計算器界面布局及表達式計算相關操作技巧,需要的朋友可以參考下
    2019-03-03
  • Android開發(fā)筆記之:Dialog的使用詳解

    Android開發(fā)筆記之:Dialog的使用詳解

    本篇文章是對Android中Dialog的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 實例詳解Android中JNI的使用方法

    實例詳解Android中JNI的使用方法

    JNI是Java Native Interface的縮寫,它提供若干的API實現(xiàn)Java與其他語言之間的通信,這篇文章主要給大家介紹了關于Android中JNI的使用方法,需要的朋友可以參考下
    2021-08-08
  • Android最簡單的限制輸入方法(只包含數(shù)字、字母和符號)

    Android最簡單的限制輸入方法(只包含數(shù)字、字母和符號)

    這篇文章主要給大家介紹了關于Android最簡單的限制輸入的實現(xiàn)方法,限制輸入框只能輸入數(shù)字、字母和符號,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看 吧
    2018-11-11
  • 關于Android中WebView遠程代碼執(zhí)行漏洞淺析

    關于Android中WebView遠程代碼執(zhí)行漏洞淺析

    這篇文章主要給大家介紹了關于Android中WebView遠程代碼執(zhí)行漏洞的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-05-05
  • Android字體相關知識總結(jié)

    Android字體相關知識總結(jié)

    最近接到一個需求,大致內(nèi)容是:全局替換當前項目中的默認字體,并引入 UI 設計師提供的一些新字體。于是對字體做了些研究,把自己的一些心得分享給大家。注意:本文所展示的系統(tǒng)源碼都是基于Android-30 ,并提取核心部分進行分析
    2021-06-06
  • 快速了解Android?Room使用細則進階

    快速了解Android?Room使用細則進階

    這篇文章主要為大家介紹了快速了解Android?Room使用細則進階,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • Android手機懸浮窗口小案例

    Android手機懸浮窗口小案例

    這篇文章主要為大家詳細介紹了Android手機懸浮窗口小案例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 深入探究Android動態(tài)代理的原理及用途

    深入探究Android動態(tài)代理的原理及用途

    動態(tài)代理是一種在編程中非常有用的設計模式,它允許你在運行時創(chuàng)建一個代理對象來代替原始對象,以便在方法調(diào)用前后執(zhí)行額外的邏輯,本文將深入探討Android動態(tài)代理的原理、用途和實際示例
    2023-09-09
  • 用Kotlin打造一個Router的示例代碼

    用Kotlin打造一個Router的示例代碼

    本篇文章主要介紹了用Kotlin打造一個Router的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05

最新評論

合江县| 舒兰市| 谢通门县| 日喀则市| 锦州市| 博爱县| 吉木乃县| 鹿泉市| 临澧县| 新野县| 漳浦县| 辽宁省| 河东区| 洛川县| 江永县| 浮山县| 五家渠市| 柳江县| 浪卡子县| 梅河口市| 安顺市| 澎湖县| 伊川县| 晋宁县| 和田市| 桐梓县| 汉寿县| 安阳县| 大冶市| 富阳市| 宁海县| 玛曲县| 盐源县| 合川市| 扶沟县| 余庆县| 孟津县| 哈密市| 兴义市| 清徐县| 南华县|