日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android application捕获崩溃异常

發(fā)布時(shí)間:2025/7/14 Android 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android application捕获崩溃异常 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Java代碼
  • 個(gè)人筆記:??
  • 通用?application??
  • 1、收集所有?avtivity?用于徹底退出應(yīng)用??
  • 2、捕獲崩潰異常,保存錯(cuò)誤日志,并重啟應(yīng)用??
  • ??
  • ??
  • public?class?HKBaseApplication?extends?Application?{??
  • ????//?activity對(duì)象列表,用于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);??
  • ??
  • ????????//?程序崩潰時(shí)觸發(fā)線程??
  • ????????uncaughtExceptionHandler?=?new?MyUncaughtExceptionHandler();??
  • ????????Thread.setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler);??
  • ????}??
  • ??
  • ????//?創(chuàng)建服務(wù)用于捕獲崩潰異常??
  • ????private?class?MyUncaughtExceptionHandler?implements?UncaughtExceptionHandler?{??
  • ????????@Override??
  • ????????public?void?uncaughtException(Thread?thread,?Throwable?ex)?{??
  • ????????????//?保存錯(cuò)誤日志??
  • ????????????saveCatchInfo2File(ex);??
  • ??
  • ????????????//?1秒鐘后重啟應(yīng)用??
  • ????????????AlarmManager?mgr?=?(AlarmManager)?getSystemService(Context.ALARM_SERVICE);??
  • ????????????mgr.set(AlarmManager.RTC,?System.currentTimeMillis()?+?1000,?restartIntent);??
  • ??
  • ????????????//?關(guān)閉當(dāng)前應(yīng)用??
  • ????????????finishAllActivity();??
  • ????????????finishProgram();??
  • ????????}??
  • ????};??
  • ??
  • ????/**?
  • ?????*?保存錯(cuò)誤信息到文件中?
  • ?????*??
  • ?????*?@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)建目錄失敗:?一般是因?yàn)镾D卡被拔出了??
  • ????????????????????????return?"";??
  • ????????????????????}??
  • ????????????????}??
  • ????????????????System.out.println("filePath?+?fileName:"?+?filePath?+?fileName);??
  • ????????????????FileOutputStream?fos?=?new?FileOutputStream(filePath?+?fileName);??
  • ????????????????fos.write(sb.getBytes());??
  • ????????????????fos.close();??
  • ????????????????//文件保存完了之后,在應(yīng)用下次啟動(dòng)的時(shí)候去檢查錯(cuò)誤日志,發(fā)現(xiàn)新的錯(cuò)誤日志,就發(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());??
  • ????}??
  • } ?

  • 來源:?http://zheyiw.iteye.com/blog/1670990

    來自為知筆記(Wiz)

    轉(zhuǎn)載于:https://www.cnblogs.com/jeffen/p/6970864.html

    總結(jié)

    以上是生活随笔為你收集整理的Android application捕获崩溃异常的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。