今天编程时候遇到一个问题:
W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x419b4c50)
。。。。
log完全没有,,,这个时候有心杀贼,无力回天啊,,,,什么报错信息都没有。
百度各种问题解决方案,最终有一篇文章:http://blog.csdn.net/liqiangeastsun/article/details/43986605 讲了一个解决问题的方案:
以下是原文:
Android错误threadid=1: thread exiting with uncaught exception (group=0x416298c8)
在项目开发中测试时崩溃,错误如上
该错误的意思是线程中存在没有捕获到的异常。一般情况下捕获异常使用
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
但是在线程池中,线程池在执行任务时捕获了所有异常,这样一来线程中所有的异常都无法捕获到抛出的异常。
即 try catch 捕获不到异常了。
Java中有一个接口,UncaughtExceptionHandler 描述如下:
- 1
- 2
- 1
- 2
Thread类中的一个方法
- 1
- 2
- 3
- 1
- 2
- 3
我们需要实现这样一个接口UncaughtExceptionHandler
,然后在程序的主线程中设置处理程序。
代码如下
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
现在还无法捕获到线程中的异常,还需要调用一个方法
- 1
- 1
在OnCreate方法中调用一下即可
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
完整代码如下
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
这样再次运行就会捕获到线程中的异常,不会导致项目直接崩溃
最终可以打印出log信息了,报错为:(Android5.0以上没这个问题,5,0以下有问题的)
java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.AbsListView$LayoutParams
问题已经很明显了,类强转时候报的问题:
解决方案:
android.view.ViewGroup.LayoutParams
改为:
android.widget.AbsListView.LayoutParams
这个问题到不是很关键,主要问题是找到了方法,当log不能显示异常信息时候,,,,可以帮我们打印出log信息,然后分析问题,解决问题。。。。