今天调试socket的时候突然间出现这个问题
其实这个问题在表面就知道什么意思
英文翻译就是 在主线程 网络程序出现异常,其实就是在主线程中 用在这种网络连接的 时间过长在Android 4.0之后就是不让在主线程中进行相应的网络操作 所以解决方案就是 建立个 子线程进行相应的操作即可
这里介绍一种子线程也是我最喜欢用的一种
// 子线程
thread = new Thread(new Runnable() {
@Override
public void run() {
while(true)
{
Thread.sleep(1000);// 延迟一秒
}
}
});
thread.start(); // 线程开始跑
将socket的代码放到这里面即可
之后我发现这个规律之后依然还是 显示这个错误NetworkOnMainThreadException
之后我一直调试发现 是 socket没有创建成功与服务器的连接 导致new socket那句代码 停滞,导致很长时间 线程停在那里, 导致这个线程没有 停止,下一个线程又开始了,导致出错
确保 socket 肯定连上之后,一切正常。