0

當長按快門按鈕激活相機中的連拍時,我想更新顯示當前照片編號的文本視圖。正如我們所知,我們在Camera中執行連拍,系統很忙,也許它不會立即刷新文本視圖。所以我做了一些這樣的操作:如何在android中快速更新textview內容顯示?

  1. 使用可運行+處理器:
  2. 發佈可運行在當前照片編號更新
  3. 呼叫TextView.setText(編號)在運行( )

    private Runnable mShowBurstNumberRunnable = new Runnable() { 
    
        public void run() { 
         mBurstShotTextView.setText(mCurrentShotsNum); 
        } 
    } 
    
    
    private PictureCallback mContinuousJpegPictureCallback = new PictureCallback() { 
        public void onPictureTaken(final byte[]data, android.hardware.Camera camera) { 
         ... 
         mCurrentShotsNum++; 
         mHandler.post(mShowBurstNumberRunnable); 
         ... 
        } 
    } 
    

但有時TextView中無法顯示迅速與我期望的數量。 我正在使用Android 4.2。

回答

0

你應該確保發佈你的mShowBurstNumberRunnable的mHandler被附加在主線程中。只有主線程才能更改UI。

你也可以試試這個

private PictureCallback mContinuousJpegPictureCallback = new PictureCallback() { 
    public void onPictureTaken(final byte[]data, android.hardware.Camera camera) { 
     ... 
     mCurrentShotsNum++; 
     mBurstShotTextView.post(mShowBurstNumberRunnable); 
     ... 
    } 
} 
+0

其實,我粘貼效果很好的代碼。現在,確保textview可以及時顯示是主要目標。我知道android中只有主線程才能改變UI的原理。 – Jerikc

+0

可能是mHandler.post(mShowBurstNumberRunnable)執行時間太長後的代碼。你可以把它們放回線程來運行你的任務。 – SFeng