|  |  |  | 
|---|
|  |  |  | import com.doumee.keyCabinet.ui.guide.GuideActivity; | 
|---|
|  |  |  | import com.doumee.keyCabinet.ui.main.MainActivity; | 
|---|
|  |  |  | import com.doumee.lib_coremodel.util.SpUtil; | 
|---|
|  |  |  | import com.innohi.YNHAPI; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.io.BufferedWriter; | 
|---|
|  |  |  | import java.io.ByteArrayOutputStream; | 
|---|
|  |  |  | 
|---|
|  |  |  | public void uncaughtException(Thread thread, Throwable ex) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | //导出异常信息到SD卡中 | 
|---|
|  |  |  | YNHAPI mAPI = YNHAPI.getInstance(); | 
|---|
|  |  |  | mAPI.setNavigationBarVisibility(YNHAPI.NavigationBarVisibility.VISIBLE); | 
|---|
|  |  |  | dumpExceptionToSDCard(ex); | 
|---|
|  |  |  | //System.out.println("重启应用"); | 
|---|
|  |  |  | // 创建一个新的启动意图 | 
|---|
|  |  |  | /*Intent intent = new Intent(mContext, MainActivity.class); | 
|---|
|  |  |  | // 设置FLAG_ACTIVITY_CLEAR_TASK标志位 | 
|---|
|  |  |  | intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); | 
|---|
|  |  |  | // 使用PendingIntent包装启动意图 | 
|---|
|  |  |  | PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_ONE_SHOT); | 
|---|
|  |  |  | // 获取AlarmManager实例 | 
|---|
|  |  |  | AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); | 
|---|
|  |  |  | // 在500毫秒后触发重启操作 | 
|---|
|  |  |  | alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + 10, pendingIntent); | 
|---|
|  |  |  | long time = SpUtil.getLong("err_app"); | 
|---|
|  |  |  | SpUtil.saveLong("err_app",System.currentTimeMillis()); | 
|---|
|  |  |  | if(System.currentTimeMillis()-time>60000){ | 
|---|
|  |  |  | //报错间隔60秒,才重启 | 
|---|
|  |  |  | //System.out.println("重启应用"); | 
|---|
|  |  |  | // 创建一个新的启动意图 | 
|---|
|  |  |  | Intent intent = new Intent(mContext, MainActivity.class); | 
|---|
|  |  |  | // 设置FLAG_ACTIVITY_CLEAR_TASK标志位 | 
|---|
|  |  |  | intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); | 
|---|
|  |  |  | // 使用PendingIntent包装启动意图 | 
|---|
|  |  |  | PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent, PendingIntent.FLAG_ONE_SHOT); | 
|---|
|  |  |  | // 获取AlarmManager实例 | 
|---|
|  |  |  | AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); | 
|---|
|  |  |  | // 在500毫秒后触发重启操作 | 
|---|
|  |  |  | alarmManager.set(AlarmManager.RTC, System.currentTimeMillis() + 10, pendingIntent); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | android.os.Process.killProcess(android.os.Process.myPid()); | 
|---|
|  |  |  | System.exit(1);*/ | 
|---|
|  |  |  | android.os.Process.killProcess(android.os.Process.myPid()); | 
|---|
|  |  |  | System.exit(1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //这里可以通过网络上传异常信息到服务器,便于开发人员分析日志从而解决bug | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } catch (IOException e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | System.out.println("错误日志1"+e.getMessage()); | 
|---|
|  |  |  | 
|---|
|  |  |  | dumpPhoneInfo(print); | 
|---|
|  |  |  | print.println(); | 
|---|
|  |  |  | ex.printStackTrace(print); | 
|---|
|  |  |  | SpUtil.saveString(FILE_NAME+time,new String(out.toByteArray())); | 
|---|
|  |  |  | //SpUtil.saveString(FILE_NAME+time,new String(out.toByteArray())); | 
|---|
|  |  |  | print.close(); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|