2014-01-15 2 views
0

카메라에서 SD 카드로 이미지를 저장하고 성공/실패한 메시지 (토스트)로 UI를 업데이트하는 것과 같은 프로세스에 가장 적합한 스레드가 무엇인지 궁금합니다. 핸들러 또는 비동기 스레드? 또한 비동기 스레드가 비트 맵을 매개 변수로 사용할 수 있습니까? 당신이 달성하고자하는 당신이 AsyncTask를 매개 변수로 비트 맵을 전달할 수 있습니다에 대한이미지를 SD 카드에 저장하는 데 사용할 스레드

감사 인 Ciaran

+0

핸들러는 스레드가 아닙니다. – Blackbelt

답변

2

뭔가를 수행해야합니다

AsyncTask<Bitmap, Void, Boolean> task = new AsyncTask<Bitmap, Void, Boolean>() { 

      @Override 
      protected Boolean doInBackground(Bitmap... bitmaps) { 
       Boolean saved = writeToDisk(bitmaps[0]); //Your write code 
       return saved; 
      } 

      @Override 
      protected void onPostExecute(Boolean saved) { 
       if (saved) { 
        Toast.makeText(context, R.string.success, Toast.LENGTH_LONG).show(); 
        //HANDLE SUCCESS 
       } else { 
        Toast.makeText(context, R.string.error, Toast.LENGTH_LONG).show(); 
        //HANDLE ERROR 
       } 
      } 
     }; 

     task.execute(bitmap); 
+0

감사합니다, 비동기 스레드가 잘 작동하는 데 사용됩니다. 언제 쓰레드 핸들러를 사용할 것인가 ?? – dancingbush

1

AsyncTask를 클래스는 중대하다.

1

안드로이드는 버튼 클릭과 같은 이벤트를 처리하는 UI 스레드에서 네트워킹을 사용할 수 없습니다. 또한 전체 GUI를 사용할 수 없게되므로 해당 스레드에서 느린 작업을 허용하지 않습니다.

이것이 SD 카드 작성에 적용되는지 확실하지 않습니다. 이는 작성해야하는 데이터의 양에 따라 다를 수 있습니다. 메가 바이트 또는 그와 비슷한 경우 SD 카드에 쓰기 위해 별도의 스레드를 사용하는 것이 쓰기 프로세스가 오래 지속될 수 있으므로 의심의 여지가 없습니다. 어쩌면 적은 비용으로. 이 같은

관련 문제