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);