Java 代码在另一个线程中仍引发NetworkOnMainThread异常
我的应用程序中有一个问题。 当我通过调试器启动应用程序时,它会抛出一个错误 NetworkOnMainThreadException。 更具体地说,在线程(非主线程)中连接到web服务器时会引发异常 com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java)。 因此,应用程序尝试在主线程上进行网络调用,但代码被另一个线程包围 有问题的代码位于从onResume调用的空白中。下面我附上我的代码 我已经尝试在另一个线程中围绕整个代码,但仍然是NetworkOnMainThreadJava 代码在另一个线程中仍引发NetworkOnMainThread异常,java,android,android-studio,mobile,Java,Android,Android Studio,Mobile,我的应用程序中有一个问题。 当我通过调试器启动应用程序时,它会抛出一个错误 NetworkOnMainThreadException。 更具体地说,在线程(非主线程)中连接到web服务器时会引发异常 com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java)。 因此,应用程序尝试在主线程上进行网络调用,但代码被另一个线程包围 有问题的代码位于从onResum
final Runnable checker=new Runnable(){
@凌驾
公开募捐{
handler.removeCallbacks(null);
Thread Thread=新线程(new Runnable(){
@凌驾
公开募捐{
试一试{
URL端点=新URL(“####”);
httpsurl连接接头=
(HttpsURLConnection)endpoint.openConnection();//这里它抛出了提到的异常
如果(连接getResponseCode()==200){
InputStream响应=conn.getInputStream();
字符串结果=iStreamToString(响应);
if(UserIdResults.equals(“0”)){
handler.postDelayed(这个,5000);
}否则{
//做点什么
}
}
}捕获(例外e){
e、 printStackTrace();
}
}
});
thread.start();
}
};
处理者。延迟后处理(检查者,5000);
问题很可能是由以下线路引起的:
handler.postDelayed(this, 5000);
如前所述,这个
指的是内部的可运行的
(您表示为闭包的那个)。这会导致网络执行Runnable
由处理程序运行,当然,处理程序在主线程上运行
您可能打算运行检查器
,在这种情况下,您应该使用检查器
来代替此