如何在android中快速更新textview内容显示?

时间:2013-07-11 05:59:18

标签: android performance user-interface android-camera textview

我希望在长按快门按钮激活相机中的连拍时快速更新显示当前照片编号的文本视图。我们知道,我们在相机中进行突发拍摄,系统很忙,也许它不会立即刷新文本视图。所以我做了一些像这样的操作:

  1. 使用runnable + handler:
  2. 在当前照片编号更新时发布可运行的
  3. 在run()

    中调用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);
            ...
        }
    }
    
  4. 但有时文本视图无法快速显示我预期的数字。 我使用的是Android 4.2。

1 个答案:

答案 0 :(得分:0)

您应该确保发布mShowBurstNumberRunnable的mHandler附加在主线程上。只有主线程可以更改UI。

你也可以试试这个

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