Android - 更新TextView会导致蓝牙延迟

时间:2018-01-24 06:16:24

标签: android bluetooth textview lag

我创建了一个通过蓝牙发送数据的应用程序。应用程序在更改后发送相应的seekBar值,然后使用从该seekBar值计算的特殊值更新文本视图。

问题是蓝牙通信期间存在延迟。我已经确定延迟来自textView的更新事件:

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    if(fromUser) {
        switch (seekBar.getId()) {
            case R.id.seek_bar_vario:
                if (progress < 100) {
                    seekBarVarioDim.setProgressDrawable(getResources().getDrawable(R.drawable.warm_white_progress));
                    seekBarVarioDim.setThumb(getResources().getDrawable(R.drawable.warm_white_thumb));
                } else if (progress > 150) {
                    seekBarVarioDim.setProgressDrawable(getResources().getDrawable(R.drawable.cool_white_progress));
                    seekBarVarioDim.setThumb(getResources().getDrawable(R.drawable.cool_white_thumb));
                } else {
                    seekBarVarioDim.setProgressDrawable(getResources().getDrawable(R.drawable.netural_white_progress));
                    seekBarVarioDim.setThumb(getResources().getDrawable(R.drawable.netural_white_thumb));
                }

                varioLighting.setMessage(Constants.MESSAGE_NOP_ID);
                varioLighting.setWarmWhiteRatio(255 - progress);
                varioLighting.setCoolWhiteRatio(progress);
                sendData(varioLighting.getStateMessage());
                mVarioKelvin = 3000 + (int)(progress * 12);//11.76470588f);

                //THE FOLLOWING LINE CAUSES THE LAG:
                textViewVarioKelvinAndIntensity.setText(mVarioKelvin + "K - " + mVarioIntensity + "%");


                break;
            case R.id.seek_bar_vario_dim:

                varioLighting.setMessage(Constants.MESSAGE_NOP_ID);
                varioLighting.setIntensity(seekBarVarioDim.getProgress());
                sendData(varioLighting.getStateMessage());
                mVarioIntensity = (progress * 100) / 255;

                //THE FOLLOWING LINE CAUSES THE LAG:
                textViewVarioKelvinAndIntensity.setText(mVarioKelvin + "K - " + (mVarioIntensity) + "%");


                break; 
        }
    }
}

即使我使用常量的one-char字符串(例如“K”)更新textView,它仍然会导致延迟。如果我删除那行,它就像我预期的那样工作。

那么,可能是什么问题。我该怎么做才能解决这个问题?

0 个答案:

没有答案