2016-04-09 3 views
-1

Ich habe eine Anwendung, die Up- und ein Bild erhalten von parse.comWie behebe ich android.os.NetworkOnMainThreadException, wenn ich ein Bild von parse.com abrufe?

und ich habe android.os.NetworkOnMainThreadException jemand hat mich mit ihr mir helfen kann, und sagen, wie es zu lösen?

Dank

final ParseFile fileObject = (ParseFile) parseObject.get("ImageFile"); 

    URL url = new URL(fileObject.getUrl()); 

    Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
    imageView.setImageBitmap(bmp); 

    linearLayout.addView(imageView); 
+0

Mögliches Duplikat von [Wie android.os.NetworkOnMainThreadException zu beheben?] (Http://stackoverflow.com/questions/6343166/how-to-fix-android-os-networkonmainthreadexception) –

Antwort

0

Verwenden Sie Ihre bevorzugten image-loading library, wie Picasso, das Bild im Hintergrund herunterzuladen und die ImageView asynchron auffüllen.

Oder machen Sie Ihre eigene Hintergrundarbeit (zum Beispiel AsyncTask) das Bild auf einem Hintergrund-Thread zum Download, dann aktualisieren, um die ImageView auf dem Hauptanwendungsthread, plus mit Caching umgehen und so weiter.

Es ist möglich, dass Ihr final ParseFile fileObject = (ParseFile) parseObject.get("ImageFile"); Code auch im Hintergrund ausgeführt werden muss; Ich habe Parse nicht verwendet und kenne daher die Details seiner API nicht.

0
Upload and Download Image(like Time consuming process) you should do that in Background thread.You tried to get or upload images in Main thread so got android.os.NetworkOnMainThreadException.Use Async task to do that 

class ImageDownload extends AsyncTask<Object, Void, Object> 
    { 

     Bitmap myBitmap=null; 
     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      super.onPreExecute(); 

      //ShowDialog(); 
     } 

     @Override 
     protected Object doInBackground(Object... params) 
     { 
      final ParseFile fileObject = (ParseFile) parseObject.get("ImageFile"); 

    URL url = new URL(fileObject.getUrl()); 

    Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 

      return null; 
     } 

     @Override 
     protected void onPostExecute(Object result) 
     { 
      super.onPostExecute(result); 


      HideDialog() 

      //Update UI here 
      linearLayout.addView(imageView); 
      imageView.setImageBitmap(bmp); 

     } 

    } 
Verwandte Themen