如何解决空指针异常和 ThreadException 中的错误android
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决空指针异常和 ThreadException 中的错误android相关的知识,希望对你有一定的参考价值。
空指针异常: 可以直接在可能出现空指针的代码处 try catch一下,你也可以这样做:在用到可能出现空指针的 变量或者对象处,先增加一个判空处理(比如:if(textutil.isempty(str) )对于ThreadException:对于线程的异常,在android中,google禁止了在主线程中进行访问网络等一些耗时操作(否则就会出现这种异常)。可以开个子线程(workThread)在里面进行访问网络,用异步任务或者 handler来处理。 参考技术A
判断变量是否为空,来解决空指针。说实话java没有很好的办法来解决这个问题,只能多写判断语句来判断。
至于线程异常,你try下就可以了。比如
trynew Thead().start();
catch (Exception e)
//异常处理
参考技术B 空指针异常: 可以直接在可能出现空指针的代码处 try catch一下,你也可以这样做:在用到可能出现空指针的 变量或者对象处,先增加一个判空处理(比如:if(textutil.isempty(str) )
对于ThreadException:对于线程的异常,在android中,google禁止了在主线程中进行访问网络等一些耗时操作(否则就会出现这种异常)。可以开个子线程(workThread)在里面进行访问网络,用异步任务或者 handler来处理。
希望能帮到你 参考技术C 在android2.3之后 在主线程中必须使用另一个线程 如handler机制,或者异步任务获取网络数据
如果你访问网络的操作 必须放在主线程中执行,那么 在oncreate()中添加
if (GetVersion.GetSystemVersion() > 2.3)
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads().detectDiskWrites().detectNetwork()
.penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath()
.build());
这样 高版本中也可以在主线程中执行网络操作了本回答被提问者采纳 参考技术D 在android2.3之后 在主线程中必须使用另一个线程 如handler机制,或者异步任务获取网络数据
如果访问网络的操作 必须放在主线程中执行,那么 在oncreate()中添加
if (GetVersion.GetSystemVersion() > 2.3)
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads().detectDiskWrites().detectNetwork()
.penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath()
.build());
这样 高版本中也可以在主线程中执行网络操作了
以上是关于如何解决空指针异常和 ThreadException 中的错误android的主要内容,如果未能解决你的问题,请参考以下文章
如何解决空指针异常和 ThreadException 中的错误android
(android)如何发现和解决(NullPointerException)空指针异常问题(持续优化)