2012-07-26 49 views
0

我有下面的类:android.os.NetworkOnMainThreadException成的AsyncTask

class CargaImgsParaAmpliar extends AsyncTask<Void, Void, Bitmap> { 

     final ProgressDialog progressDialog = new ProgressDialog(imagen.this); 

     protected void onPreExecute() { 
      progressDialog.setTitle(""); 
      progressDialog.setMessage("Cargando Imagen..."); 
      progressDialog.show(); 
     } 

     protected Bitmap doInBackground(Void... params) { 
      Bitmap mIcon1 = null; 
      URL url_value; 
      try { 
       url_value = new URL(StrUrl); 
       mIcon1 = BitmapFactory.decodeStream(url_value.openConnection().getInputStream()); 
      } catch (MalformedURLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      }catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      }   
      return mIcon1; 
     } 

     protected void onPostExecute(Bitmap imagen) { 
      m_imageView.setImageBitmap(urlImageToBitmap(StrUrl)); 
      progressDialog.dismiss(); 
     }  
    } 

我做内的AsyncTask互联网放电过程中,它仍然给了我异常android.os.NetworkOnMainThreadException

我该如何解决这个问题?

+0

从哪里执行这个AsyncTask? – user370305 2012-07-26 18:46:57

+0

在类GestureListener中的onDoubleTap方法中。 – Dracknes 2012-07-26 18:55:17

+0

你可以发布'urlImageToBitmap'代码。它有可能调用服务器。 'OnPostExecute'在UITHread上运行。 – 2012-07-26 18:56:23

回答

2

在我看来,urlImageToBitmap访问网络,但从onPostExecute(这是在UI任务上运行)执行。

而你似乎没有在onPostExecuteimagen参数中做任何事情。因此在doInBackground中检索到的图像基本上丢失。

+0

哈打我吧:) – 2012-07-26 18:56:55

+0

是的,在这种方法中,我再次连接到互联网。 完美,谢谢你的帮助,我会打电话给doInBackground。 – Dracknes 2012-07-26 19:07:22

+0

完美!谢谢@Codo – Dracknes 2012-07-26 19:15:07

相关问题