一个可以捕获程序崩溃个 然后可以保存本地的方法
来源:互联网 发布:淘宝店铺一颗心 编辑:程序博客网 时间:2024/06/06 00:41
一个可以捕获程序崩溃个 然后可以保存本地的方法
public class MyApplication extends Application { private String DIR = ""; private String NAME = ""; /** * 为了完全退出程序调用方法 MyApplication.getInstance().addActivity(this); * MyApplication.getInstance().exit(); */ private static MyApplication instance_app; // 用于存儲 Activity 的集合,方便統一关闭 private List<Activity> activityList = new LinkedList<Activity>(); public MyApplication() {} @Override public void onCreate() { super.onCreate(); this.DIR = Environment.getExternalStorageDirectory() .getAbsolutePath() + "/yuedaosurvey/log/"; this.NAME = "client_"+getCurrentDateString() + ".txt"; Thread.setDefaultUncaughtExceptionHandler(uncaughtExceptionHandler); } /** * 捕获错误信息的handler */ private Thread.UncaughtExceptionHandler uncaughtExceptionHandler = new Thread.UncaughtExceptionHandler() { @Override public void uncaughtException(Thread thread, Throwable ex) { ex.printStackTrace(); String info = null; ByteArrayOutputStream baos = null; PrintStream printStream = null; try { baos = new ByteArrayOutputStream(); printStream = new PrintStream(baos); ex.printStackTrace(printStream); byte[] data = baos.toByteArray(); info = new String(data); data = null; } catch (Exception e) { e.printStackTrace(); } finally { try { if (printStream != null) { printStream.close(); } if (baos != null) { baos.close(); } } catch (Exception e) { e.printStackTrace(); } } writeErrorLog(info); // 捕获异常结束程序 System.out.println("异常关闭Socket!"); PushApplication.getInstance().logout(); YDApplication.getInstance().exit(); } }; /** * 向文件中写入错误信息 * * @param info */ protected void writeErrorLog(String info) { File dir = new File(DIR); if (!dir.exists()) { dir.mkdirs(); } File file = new File(dir, NAME); try { FileOutputStream fileOutputStream = new FileOutputStream(file, true); fileOutputStream.write(info.getBytes()); fileOutputStream.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 获取当前日期 * * @return */ private static String getCurrentDateString() { String result = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd",Locale.getDefault()); Date nowDate = new Date(); result = sdf.format(nowDate); return result; } // 单例模式获取唯一的MyApplication实例 public static MyApplication getInstance() { if (instance_app == null) { instance_app = new MyApplication(); } return instance_app; } // 添加Activity到容器中 public void addActivity(Activity activity) { activityList.add(activity); } // 遍历所有Activity并finish public void exit() { for (Activity aty_list : activityList) { aty_list.finish(); } System.exit(0); } public void onLowMemory() { super.onLowMemory(); System.gc(); }}
0 0
- 一个可以捕获程序崩溃个 然后可以保存本地的方法
- 一个可以让linux崩溃的脚本
- 一个保存数据的方法(可以切换存放的位置,可以设置密钥)
- 定义一个StringBuffer类对象,然后通过append()方法想对象中添加26个小写字母,要求每次只添加一次,共添加26次,然后按照逆序的方式输出,并且可以删除前5个字符。
- 一个form可以对应多个action的方法
- 一个班有n个学生,需要把每个学生的简单资料(姓名和学号)输入计算机保存。然后可以通过输入某一学生的姓名查找其有关资料。当输入一个姓名后程序就查找该班有无此学生,如果有,则输出他的姓名和学号,如果找不到
- 让程序崩溃但是不闪退的方法(可以用在真机测试上)
- java Map 一个key其实可以保存多个value
- 介绍一个可以读取保存在程序集里面的图片资源的小工具
- 一个据说可以让瑞星ravmond.exe崩溃的网站
- IE Sucks - 一个可以让IE崩溃的页面
- IOS中可以一个多个xib文件对应一个类。当然也可以在一个Xib中创建多个view然后也是用一个类控制
- 可以拍照的一个WPF程序
- 可以动态选取多个或者一个项的js方法。(可以动态添加 删除选项 js)
- 编写一个程序读入一行输入,然后反向打印该行,您可以把输入存储在一个char数组中: 假定该行不超过255个字符。回忆一下,您可以使用具有%c说明符的scanf()从输入中一次 读入一个字符,而且当您按下回车键时会产生换行符(/n)
- 编写一个程序读入一行输入,然后反向打印该行,您可以把输入存储在一个char数组中: 假定该行不超过255个字符。回忆一下,您可以使用具有%c说明符的scanf()从输入中一次 读入一个字符,而且当您按
- 程序设计的理念是从写测试程序开始,然后编写可以通过测试的程序
- [Android]Android apk崩溃捕获异常保存到本地(捕获线程异常)
- linux内核函数 ioremap()的原理及意义
- Java中时分秒毫秒格式(xx:xx:xx.xxx)加一个txt读出的整数值 转换为时间格式 并存入txt
- 黑马程序员-JAVA基础面试-获取10个1-20 的随机数,要求获取的随机数不能相同!
- <textarea>标签中换行符号“
“
- 使用Navicat for Mysql连接装在虚拟机Ubuntu16.04上的mysql服务器
- 一个可以捕获程序崩溃个 然后可以保存本地的方法
- android工程下assets与raw文件夹
- 使用jquery实现的按需加载
- mybatis的延迟加载
- gradle打包简介
- 字符串相似度
- 分布式查找过程[HBase]Region location
- 华为ospf路由协议
- 用ChemDraw如何画3D图