android.os.NetworkOnMainThreadException将数据发布到url
这个问题在这里已经有了答案:
因为你在 Main UI thread
上进行网络操作
如果您使用线程来执行网络操作,那么您可以使用此代码段
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy =
new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
在你的OnCreate()
但是它的错误做法是使用上述操作,而应该使用android提供的AsyncTask
类来正确处理网络操作without blocking UI thread
。
你可以通过访问这个LINK来了解更多
或者可以使用下面的代码
private class UploadFiles extends AsyncTask<String, Void, Void> {
protected String doInBackground(String... urls) {
//THIS METHOD WILL BE CALLED AFTER ONPREEXECUTE
//YOUR NETWORK OPERATION HERE
return null;
}
protected void onPreExecute() {
super.onPreExecute();
//THIS METHOD WILL BE CALLED FIRST
//DO OPERATION LIKE SHOWING PROGRESS DIALOG PRIOR TO BEGIN NETWORK OPERATION
}
protected void onPostExecute(String result) {
super.onPostExecute();
//TNIS METHOD WILL BE CALLED AT LAST AFTER DOINBACKGROUND
//DO OPERATION LIKE UPDATING UI HERE
}
}
你可以通过写作简单地调用这个类
new UploadFiles ().execute(new String[]{//YOUR LINK});
你应该使用Asynctask,线程,处理程序而不是主线程连接到网络。 如果您尝试使用主UIThread进行连接(执行很长时间的操作),您将看到此错误。
当应用程序尝试在其主线程上执行联网操作时,会引发此异常。 在AsyncTask或IntentService w中运行代码
请参阅此示例以了解如何处理asyncTask中的网络操作
链接地址: http://www.djcxy.com/p/5029.html上一篇: android.os.NetworkOnMainThreadException while posting data to url