2014-05-20 3 views
1

안드로이드 카운트 다운 타이머 앱을 개발하고 시작 버튼을 클릭하면 사용자가 시작 버튼을 클릭하면 카운트 다운 타이머가 표시되고 사용자는 타이머를 실행하고 나머지 활동은 사용자가 멈추고 타이머를 계속 실행하는 경우 타이머 만 멈추십시오.안드로이드 타이머 서비스

어떻게 서비스에서 타이머를 실행하고 활동 안드로이드에서 텍스트 뷰로 시간을 업데이트 할 수 있습니까?

답변

4

예. 가능합니다. 오래 전에 사용했던 코드 샘플을 사용하지 마십시오. 버튼을 사용하는 것이 아니라 마음에 드는 방법을 알려줍니다. 이 코드는이 서비스입니다

현재의 카운트 다운 값으로 액션 바의 MenuItem을 업데이트합니다

public class CountDownTimerService extends Service { 
static long TIME_LIMIT = 300000; 
CountDownTimer Count; 



@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    super.onStartCommand(intent, flags, startId); 
    Count = new CountDownTimer(TIME_LIMIT, 1000) { 
     public void onTick(long millisUntilFinished) { 
      long seconds = millisUntilFinished/1000; 
      String time = String.format("%02d:%02d", (seconds % 3600)/60, (seconds % 60)); 

      Intent i = new Intent("COUNTDOWN_UPDATED"); 
      i.putExtra("countdown",time); 

      sendBroadcast(i); 
      //coundownTimer.setTitle(millisUntilFinished/1000); 

     } 

     public void onFinish() { 
      //coundownTimer.setTitle("Sedned!"); 
      Intent i = new Intent("COUNTDOWN_UPDATED"); 
      i.putExtra("countdown","Sent!"); 

      sendBroadcast(i); 
      //Log.d("COUNTDOWN", "FINISH!"); 
      stopSelf(); 

     } 
    }; 

    Count.start(); 
    return START_STICKY; 
} 

@Override 
public IBinder onBind(Intent arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public void onDestroy() { 
    Count.cancel(); 
    super.onDestroy(); 
}} 

이것은 당신이 텍스트 뷰 업데이트 할 당신이 당신의 활동이 필요 필요한 코드 :

startService(new Intent(context, CountDownTimerService.class)); 
registerReceiver(uiUpdated, new IntentFilter("COUNTDOWN_UPDATED")); 
//Log.d("SERVICE", "STARTED!"); 


private BroadcastReceiver uiUpdated = new BroadcastReceiver() { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     //This is the part where I get the timer value from the service and I update it every second, because I send the data from the service every second. The coundtdownTimer is a MenuItem 
     countdownTimer.setTitle(intent.getExtras().getString("countdown")); 

    } 
}; 

희망이 도움이됩니다.

+0

답장을 보내 주셔서 감사합니다. 매우 유용합니다. –

+0

@ developer.android 문제 없습니다. 기꺼이 투표하거나 뭐든지 투표하십시오. 사랑을 공유하십시오 :) – Aksiom

+0

@Aksiom. 네가 나 한테 대답 해 줄 수 있겠 니? 내가 화면에 컨트롤을 갖고 싶어? 여기 CountDownTimer와 OFF : http://stackoverflow.com/q/38613564/3671748 –