最近在项目交付时,客户测试出程序偶尔会崩溃的情况,于是我去做测试,真发现如此情况,一看机型是G10,配置还算OK,但由于里面程序运行很多,内存初始就70%,
所以跑了一段时间后,程序有可能挂掉,因为是视频播放,程序本身较耗内存,最后在我不断尝试的情况下,再现了程序直接挂掉的情况。
如下图所示
在我以前就认为这种运行时错误时没办法捕获,但昨天自己网上搜了下,还真给捕获了,代码如下
Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler() {//给主线程设置一个处理运行时异常的handler
@Override
public void uncaughtException(Thread thread, final Throwable ex) {
//建议退出程序
System.exit(0);
}
});
我注意了下,一般这种情况,用360查看此时内存是80%多,很明显是由于内存不足,无法给新建的对象分配内存造成的运行时错误。
下图是捕获日志打印
上面是第一种,还有第二种是运行时异常。啥也不说贴代码
itry{
bitmapVideo.copyPixelsFromBuffer(Pixelbuffer);}
catch(RuntimeException re){
HandlerMessageUtil.sendRuntimeException(this.handler);
}
这是在绘图ondraw方法里的小段程序,本身没有捕获异常,就这样bitmapVideo.copyPixelsFromBuffer(Pixelbuffer);,后来发现报错,错误没截图,不过就是运行时异常,
如果没有捕获就如客户测的一样,程序直接崩溃,捕获以后法界给主线程发送消息提示,用户体验就好了。
我相信很多人都遇到过这种情况吧,该捕就捕,希望对大家有些帮助。
========================================================================
Smallrui 14:47:23
http://blog.csdn.net/leizuishuai201314/article/details/7387924
Smallrui 14:47:28
请解释
Smallrui 15:18:06
谁授权你们这么用了?
(**暂时隐藏名字**) 15:18:40
那是之前跟你一起测试的啊
(**暂时隐藏名字**) 15:18:57
你要觉得这样也不行 我闪了就是
Smallrui 15:19:00
我什么时候有提供你们java的库?和 packet?
Smallrui 15:19:27
哥们儿,免费为你们也加了几次班了。也冒充过你们公司技术打电话谈合作。又不是你的公司,何必做这种事情。
(**暂时隐藏名字**) 15:20:17
说句实话 我现在这个项目把我弄的头大死了
(**暂时隐藏名字**) 15:20:27
做完这个项目我就走人
Smallrui 15:20:38
这和我一点关系没有,我只是觉得你们的行为