2013-10-19 40 views
0

獲得以下異常而下載圖像Android的位圖下載

> 10-19 13:18:49.421: E/AndroidRuntime(2259): FATAL EXCEPTION: AsyncTask #4 
10-19 13:18:49.421: E/AndroidRuntime(2259):  java.lang.RuntimeException: An error occured while executing doInBackground() 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at android.os.AsyncTask$3.done(AsyncTask.java:299) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at java.util.concurrent.FutureTask.run(FutureTask.java:239) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at java.lang.Thread.run(Thread.java:856) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  Caused by: java.lang.OutOfMemoryError 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:529) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:601) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at com.yemektarifleri.monu.CategoryList.downloadBitmap(CategoryList.java:356) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at com.yemektarifleri.monu.CategoryList$BitmapDownloaderTask.doInBackground(CategoryList.java:299) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at com.yemektarifleri.monu.CategoryList$BitmapDownloaderTask.doInBackground(CategoryList.java:1) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
10-19 13:18:49.421: E/AndroidRuntime(2259):  ... 4 more 


@Override 
    protected ArrayList<Product> doInBackground(String... params) { 

     ArrayList<Product> productList = new ArrayList<Product>(); 
     try { 
      String ret = getUrlString(params[0]); 
      ret = ret.trim();   
      JSONObject jsonObj = new JSONObject(ret); 


      JSONArray products = jsonObj.getJSONArray("item"); 
      JSONObject tmp; 
      for(int i=0; i<products.length(); i++){ 
       tmp = products.getJSONObject(i); 
       Product _product = new Product(
         tmp.getString("foodId"), 
         tmp.getString("yemekadi"), 
         tmp.getString("topsure"), 
         tmp.getString("kackisi"), 
         tmp.getString("foodimg") 

         ); 
       productList.add(_product); 

       foodIds.add(tmp.getString("foodId")); 
      } 
     } catch (SocketTimeoutException e) { 
      e.printStackTrace(); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 

     return productList; 
    } 



public Bitmap downloadBitmap(String url) throws MalformedURLException, IOException { 
    final AndroidHttpClient client = AndroidHttpClient.newInstance("Android"); 
    final HttpGet getRequest = new HttpGet(url); 

    try { 
     HttpResponse response = client.execute(getRequest); 
     final int statusCode = response.getStatusLine().getStatusCode(); 
     if (statusCode != HttpStatus.SC_OK) { 
      return null; 
     } 

     final HttpEntity entity = response.getEntity(); 
     if (entity != null) { 
      InputStream inputStream = null; 
      try { 
       inputStream = entity.getContent(); 
       final Bitmap bitmap = BitmapFactory.decodeStream(inputStream); 
       return bitmap; 
      } finally { 
       if (inputStream != null) { 
        inputStream.close(); 
       } 
       entity.consumeContent(); 
      } 
     } 
    } catch (MalformedURLException e) { 
     getRequest.abort(); 
     e.printStackTrace(); 
    } catch (IOException e) { 
     getRequest.abort(); 
     e.printStackTrace(); 
    } finally { 
     if (client != null) { 
      client.close(); 
     } 
    } 
    return null; 
} 
+0

我們應該如何幫助你,如果我們看不到任何碼? com.yemektarifleri.monu.CategoryList $ BitmapDownloaderTask.doInBackground(CategoryList.java:1) –

+0

添加了代碼。 –

+0

是的,知道看看我的答案;) –

回答

0

你得到位圖一個內存溢出異常,所以你應該看看THIS