学习笔记--Android TCP客户端与服务器端不能通信之一
程序员文章站
2022-03-26 19:45:05
学习笔记–Android TCP客户端与服务器端不能通信之一android.os.NetworkOnMainThreadException报错 最近公司要我做一个Android端TCP通信控制视频播放软件,我做了TCP服务端和TCP客户端,用服务器端软件来控制TCP端视频播放器播放视频的功能,然而做好之后却遇到了不同Android版本服务端和客户端无法通信的问题,然后我进行了各种操作测试愁了两天发量更少了,发现同一版本的Android端可以进行通信,不同版本之间无法进行通信,最后发现是android.o...
学习笔记–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