我创建了一个通过蓝牙发送数据的应用程序。应用程序在更改后发送相应的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,它仍然会导致延迟。如果我删除那行,它就像我预期的那样工作。
那么,可能是什么问题。我该怎么做才能解决这个问题?