android.os.NetworkOnMainThreadException将数据发布到url

这个问题在这里已经有了答案:

  • 我该如何解决android.os.NetworkOnMainThreadException? 48个答案

  • 因为你在 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

    下一篇: android.os.NetworkOnMainThreadException Manifest