2014-01-15 71 views
0

想知道什麼是最合適的線程使用像從相機圖像保存到SD卡上,併成功更新UI的過程/失敗消息(乾杯).. 處理程序或異步線程? 也可以異步線程把一個位圖作爲參數?要使用的線程將影像保存到SD卡

感謝 夏蘭

+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類是偉大的,你想實現什麼,你可以通過位圖作爲參數的AsyncTask。

1

Android不允許在UI線程上使用網絡(即處理按鈕點擊等事件)。而且,它不允許在該線程上進行任何緩慢的操作,因爲它們會阻止整個GUI。

我不確定這是否適用於SD卡寫入。這可能取決於您需要寫入的數據量。如果數量級爲兆字節或接近於此,則使用單獨的線程寫入SD卡是毫無疑問的,因爲寫入過程可能會持續很長時間。甚至可能少一些。