学习笔记–Android TCP客户端与服务器端不能通信之一

android.os.NetworkOnMainThreadException报错

最近公司要我做一个Android端TCP通信控制视频播放软件,我做了TCP服务端和TCP客户端,用服务器端软件来控制TCP端视频播放器播放视频的功能,然而做好之后却遇到了不同Android版本服务端和客户端无法通信的问题,然后我进行了各种操作测试愁了两天发量更少了,发现同一版本的Android端可以进行通信,不同版本之间无法进行通信,最后发现是android.os.NetworkOnMainThreadException报错,查阅资料和大佬的文章发现Android 4.0之后的版本网络连接不能放在主线程,否则会保错不能使用。

解决方法:

TCP服务端添加下列代码

1.网络请求数据量很小的话可以加入这段代码

@Override
protected void onCreate(Bundle savedInstanceState) { 
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	
		 //Android 4.0 之后不能在主线程中给客户端发送消息,网络请求数据量很小的话使用此代码可以进行通信
		 if (android.os.Build.VERSION.SDK_INT > 9) { 
		     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
		     StrictMode.setThreadPolicy(policy);
		  }
}

2.启动一条子线程进行你的网络请求,推荐使用这种

  // Android 4.0 之后不能在主线程中给客户端发送消息
      new Thread(new Runnable(){ 
          @Override
          public void run() { 
              cachedImage = asyncImageLoader.loadDrawable(imageUrl, position);
              imageView.setImageDrawable(cachedImage);
          }
      }).start();

总结

终于解决这个问题了,满满的成就感,真是泰开心了,学习了就要分享,大家一起努力哈,如果有问题评论区见。
感谢大佬的分享:https://blog.csdn.net/qq_29477223/article/details/81027716

本文地址:https://blog.csdn.net/qq_40397259/article/details/109000772