2013-07-29 3 views
0

불행히도 내 아키텍처가 작동하지 않아 귀하의 도움이 필요합니다.게임 타이머 구성을위한 조언 검색

내가 해결하려는 문제 :

난 당신이 "1 분간 실행"과 같은 운동을 선택할 수있는 미니 게임을 프로그램. 내가 경우
  • 다시
  • 카운트 다운이 조각에게 올바른 진행
  • 카운트 다운해야 떠나 앞서 경우 실행해야합니다 마무리 한 후 작업을 할 조각, 활동, 액션 바 ... 아무 곳이나 응용 프로그램에서 카운트 다운을 보여주는

    • 프래그먼트로 돌아 가기

    CountDownTimer를 구현하는 동안 문제를 해결하려고했습니다. 그러나 countDownTimer가 조각의 일부인 경우 조각을 남겨두면 파손됩니다. 다시 카운트 다운 타이머가 시작될 때 ...

    그래서 나는 스레드에 대해 생각해 보았습니다 ... 그러나 어떻게 조각과 카운트 다운을 원하는대로 표시 할 수 있습니까?

    스레드가 완료 될 때까지 스레드가 살아 있습니까? 신청서를 닫더라도?

    그래서 문제를 해결하기 위해 검색 할 수있는 몇 가지 키워드를 알려주십시오. 아니면 해결책을 설명 하시겠습니까? 귀하의 조언에 대한

    감사)

  • 답변

    2

    Service 카운터를 원격 프로세스로 실행하고 타이머를 표시해야하는 모든 곳에서 해당 서비스에 바인드 한 다음 observer 패턴을 사용하여 CountDownTimer의 onTick 메소드 서비스에서 수신 한 콜백을 호출해야합니다. 옵저버를 업데이트하고 싶습니다 :

    mCountDownTimer = new CountDownTimer(startTime, 1000) { 
         //update after each tick 
         public void onTick(long millisUntilFinished) { 
    
          long seconds = (millisUntilFinished/1000) % 60; 
          long minutes = ((millisUntilFinished/1000)/60) % 60; 
          long hours = (((millisUntilFinished/1000)/60)/60) % 24; 
          long days = (((millisUntilFinished/1000)/60)/60)/24; 
          if(listeners!=null){ 
           Log.d(TAG, "days:"+days + "hours:"+ hours + "minutes:"+ minutes + "seconds:"+ seconds); 
           listeners.onTimeChanged(days, hours, minutes, seconds); 
          } 
         } 
    
         public void onFinish() { 
          if(listeners!=null){ 
           Log.d(TAG, "timer finished"); 
           listeners.onTimerFinish(); 
          } 
         } 
        }.start(); 
    
    +0

    최상의 솔루션으로 보입니다. 그래서 나는 "운동이 끝났습니다"와 같은 푸시 알림을 보낼 수도 있습니다. 감사 – Bolic

    1

    나는 어플리 휴가와 그 정말 복잡한 것 같다 때 스레드가 죽을 때문에, 실제 카운트 다운을 만들려고하지 않을 것입니다.

    대신에 시작 시간과 실행중인 카운트 다운의 시간을 어딘가에 (sqlite db? file?) 써주세요. 표시 할 때마다 쿼리하고 필요할 때마다 뷰를 업데이트하는 데 필요한 프로세스를 수행해야합니다. 이는 스레딩 부담이없는 모든 사양에 대해 (나에게) 쉽게 응답하고 디스크 공간을 극소화하는 것만을 사용합니다. 또한 문제없이 모든 카운트 다운 관련 데이터를 저장할 수 있으므로 유용 할 것입니다.

    +0

    감사합니다. 스레드와 같은 꽤 좋은 아이디어입니다 ;-) – Bolic

    +0

    하지만 푸시 알림이 내 마음을 넘고 있습니다. 이 솔루션으로 나는 그들을 보낼 수 없습니다. – Bolic