在开发树莓派小车控制端时发现,当使用Socket网络编程时,程序闪退并显示android.os.NetworkOnMainThreadException异常
经查阅资料后发现,从SDK3.0开始,google不再允许网络请求(HTTP、Socket)等相关操作直接在主线程中,其实本来就不应该这样做,直接在UI线程进行网络操作,会阻塞UI、用户体验不好。
也就是说,在SDK3.0以下的版本,还可以继续在主线程里这样做,在3.0以上,就不行了。
解决方案有以下几种方式
- 使用多线程(Thread)
- 多线程(Runnable)
- 使用Handler执行耗时任务