2013-06-18 1 views
0

У меня есть FATAL EXCEPTION: AsyncTask # 1 при попытке загрузить изображение на веб-сервер из приложения для Android. Я использую Bitmap и BitmapFactory для кодирования изображения.Android HttpClient FATAL EXCEPTION: AsyncTask # 1 с использованием BitmapFactory

@Override 
protected Void doInBackground(Void... params) { 

    Bitmap bitmapOrg = BitmapFactory.decodeFile(this.path); 

    ByteArrayOutputStream bao = new ByteArrayOutputStream(); 

    if (bitmapOrg == null) 
    { 
     return null; 
    } 


    bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 90, bao); 

    byte[] data = bao.toByteArray(); 

    HttpClient httpClient = new DefaultHttpClient(); 
    HttpPost postRequest = new HttpPost("http://192.168.20.162/sse_server/up.php"); 
    MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 

    //Set Data and Content-type header for the image 
    entity.addPart("file", new ByteArrayBody(data, "image/jpeg", "file")); 
    postRequest.setEntity(entity); 
    try { 

     HttpResponse response = httpClient.execute(postRequest); 
    //Read the response 
     String jsonString = EntityUtils.toString(response.getEntity()); 
     Log.v("RequestInformation", "after uploading file " + jsonString); 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return null; 
} 

А вот ошибки LogCat стек:

06-18 09:38:30.270: W/dalvikvm(1394): threadid=11: thread exiting with uncaught exception (group=0x40a71930) 
06-18 09:38:30.490: E/AndroidRuntime(1394): FATAL EXCEPTION: AsyncTask #1 
06-18 09:38:30.490: E/AndroidRuntime(1394): java.lang.RuntimeException: An error occured while executing doInBackground() 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at android.os.AsyncTask$3.done(AsyncTask.java:299) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at java.util.concurrent.FutureTask.setException(FutureTask.java:219) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at java.util.concurrent.FutureTask.run(FutureTask.java:239) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at java.lang.Thread.run(Thread.java:856) 
06-18 09:38:30.490: E/AndroidRuntime(1394): Caused by: java.lang.OutOfMemoryError 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:529) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:302) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:328) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at com.example.testapp.HttpTraitement.doInBackground(HttpTraitement.java:75) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at com.example.testapp.HttpTraitement.doInBackground(HttpTraitement.java:1) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
06-18 09:38:30.490: E/AndroidRuntime(1394):  ... 4 more 

Я не знаю, откуда приходит сообщение об ошибке. пожалуйста,

ответ

1

Растровые изображения - очень большие потребители памяти. Наличие двух загруженных в память может быть большой проблемой. Вы должны рассмотреть возможность использования BitmapFactory.Options при декодировании нового растрового изображения.
Это может помочь https://stackoverflow.com/a/13363988/1503155

Смежные вопросы