Android 使用倒计时每隔几毫秒添加一次样式是正确的方法吗?
我有一个音频曲目播放和曲目中的单词数组,其中每个单词都有相应的开始时间:Android 使用倒计时每隔几毫秒添加一次样式是正确的方法吗?,android,Android,我有一个音频曲目播放和曲目中的单词数组,其中每个单词都有相应的开始时间: HashMap<String, Float> words = new HashMap<>(); words.put("This", 11.258); words.put("is", 11.733); words.put("some", 11.733); 这种方法行吗,或者有更好的方法来实现我描述的功能?可能使用MediaPlayer中的某些内容?您不必为计时器定义自己的线程,因此您可以 避开线程管
HashMap<String, Float> words = new HashMap<>();
words.put("This", 11.258);
words.put("is", 11.733);
words.put("some", 11.733);
这种方法行吗,或者有更好的方法来实现我描述的功能?可能使用MediaPlayer中的某些内容?您不必为计时器定义自己的线程,因此您可以 避开线程管理的所有问题,让系统来处理它 以下是处理程序实现:
//updated the screen when we are testing for connectivity and errors.
private Handler handlerHighlightWords = new Handler() {
@Override
public void handleMessage(Message msg) {
...
// highlight current word
Spannable spannableText = new SpannableString(tv.getText());
spannableText.setSpan(new BackgroundColorSpan(Color.LTGRAY), startOffset, endOffset, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(spannableText);
handlerMessageText.sendEmptyMessageDelayed(0, 1000);
}
};
//runnable to to feed to handler.
final Runnable handlerRunnableMessage = new Runnable() {
public void run() {
Spannable spannableText = new SpannableString(tv.getText());
spannableText.setSpan(new BackgroundColorSpan(Color.LTGRAY), startOffset, endOffset, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tv.setText(spannableText);
}
};
然后单击按钮后:
handlerMessageText.post(handlerRunnableMessage);
谢谢,handler将如何成为更好的方法?我在下面发布了我的答案:谢谢!你能解释一下为什么这种方法比使用倒数计时器更好吗?我没有为
CountDownTimer
创建线程,而是从主应用程序线程运行它。我为另一个使用CountDownTimer基代码的项目创建了另一个类。如您所见,倒计时计时器还使用了一个处理程序。我认为处理器是你应用程序的完美选择——我认为你不需要倒计时。
handlerMessageText.post(handlerRunnableMessage);