Использовать метод Timer или MediaPlayer? - PullRequest
1 голос
/ 19 августа 2011

В настоящее время я часто вызываю .getCurrentPosition, чтобы узнать текущую позицию моего MediaPlayer.Кажется, это сильно замедляет мой интерфейс, так как я запускаю анимацию.Мой вопрос заключается в том, что вместо того, чтобы вызывать этот метод снова и снова ... было бы лучше использовать таймер и отображать его, и просто остановить / запустить его по щелчку?

Вот мой текущий код:

private void startTimer () {Thread promoThread = new Thread () {

        @Override
        public void run() {

          while(media[1].isPlaying()){

          Message msg = new Message(); 

          String timer1 =

getTimeString (media [1] .getCurrentPosition ());

          msg.obj = timer1;

          mHandler.sendMessage(msg); 

          }

        }


    };
    promoThread.start();
      }

и:

окончательный защищенный обработчик mHandler = новый обработчик () {

  @Override public void handleMessage(Message msg) { 

      String text = (String)msg.obj;

      myText.setText(text);
}

};

1 Ответ

1 голос
/ 19 августа 2011

Вам не нужно постоянно вызывать getPosition для отслеживания времени воспроизведения, вместо этого просто запустите этот таймер и обновите свой пользовательский интерфейс в соответствии со временем таймера. Вы также можете установить OnInfoListener () в MediaPlayer для отслеживания окончания воспроизведения и таймера уничтожения.

Используйте runOnUiThread () внутри Timer для обновления пользовательского интерфейса, нет необходимости делать это с Handler.

Я кодировал такой таймер, который срабатывал каждые 200 мс, и обновлял пользовательский интерфейс счетчика без проблем.

...