2011-08-19 3 views
1

현재 MediaPlayer의 현재 위치를 가져 오기 위해 .getCurrentPosition을 많이 호출하고 있습니다. 애니메이션을 실행하는 동안 내 UI가 많이 느려지는 것 같습니다. 제 질문은 그 방법을 반복해서 호출하는 대신 타이머를 사용하여 표시하는 것이 좋을까요? 클릭만으로 그 타이머를 시작/중지 할 수 있습니까?Timer 또는 MediaPlayer 메서드를 사용합니까?

여기 내 현재 코드 :

개인 무효가 startTimer() { 스레드 promoThread = 새로운 스레드() {

 @Override 
     public void run() { 

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

      Message msg = new Message(); 

      String timer1 = 

getTimeString (미디어 [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); 
} 

};

+0

질문을 게시하는 Thx, 나는 오늘 아침에 나 자신에게 질문했다! – jDourlens

답변

1

재생 시간을 추적하기 위해 항상 getPosition을 호출 할 필요없이 타이머를 실행하고 타이머 시간에 따라 UI를 업데이트하십시오. MediaPlayer에 OnInfoListener()를 추가하여 재생 종료 및 종료 타이머를 추적 할 수 있습니다.

타이머 내에서 runOnUiThread()를 사용하여 UI를 업데이트합니다. 처리기로 UI를 업데이트 할 필요가 없습니다.

각 타이머를 200mS마다 코딩하고 아무런 문제없이 카운터 UI를 업데이트했습니다.

+0

이 방법으로 내 애니메이션 속도가 느려질 것이라고 생각하십니까? – Jonno

+0

나는 그렇게 생각하지 않는다. 타이머는 자체 스레드에서 실행되며 500mS 정도의 시도를한다. 미세 입자 계수기가 필요합니까? – ruhalde

+0

나는 그렇게 생각하지 않는다. 거기에 비슷한 애플 리케이션을 거기에 지연없이 업데이 트와 카운터를 업데이 트와 건물이야 그리고 부드러운 실행하고 있습니다. 그것이 나를 혼란스럽게합니다. – Jonno