2016-02-25 15 views
0

我正在試圖在服務中添加計時器並獲取價值。但我沒有得到正確的計時器價值。如何添加天文臺裏面的服務?

public class NewLocationUpdateService extends Service { 
    Chronometer chronometer; 
    private static final int LOC_API_CALL_INTERVAL = 60 * 1000; 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 


     chronometer = new Chronometer(NewLocationUpdateService.this); 
       chronometer.setBase(SystemClock.elapsedRealtime()); 
       chronometer.start(); 

     startTimer(); 

     return START_NOT_STICKY; 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 


     return binder; 
    } 

    @Override 
    public boolean onUnbind(Intent intent) { 

     return super.onUnbind(intent); 

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


     stopTimer(); 

    } 

//Timer related functions 

    private void startTimer(){ 
     if(timer!=null){ 
      return; 
     } 
     timer=new Timer(); 
     timer.scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 

       long millis=SystemClock.elapsedRealtime() - chronometer.getBase(); 
       long seconds = (millis/1000) % 60; 
       Log.e("timefortest", "" + seconds); 
      } 
     }, LOC_API_CALL_INTERVAL, LOC_API_CALL_INTERVAL); 
    } 

    private void stopTimer(){ 

     if(null!=timer){ 
      timer.cancel(); 
      timer=null; 
     } 
    } 


} 

我得到

E/timefortest: 7 
E/timefortest: 1 
E/timefortest: 0 
E/timefortest: 5 
E/timefortest: 0 
E/timefortest: 0 
E/timefortest: 0 
E/timefortest: 0 
E/timefortest: 1 
E/timefortest: 0 
E/timefortest: 2 

輸出我期待

E/timefortest: 60 
E/timefortest: 120 
E/timefortest: 180 
E/timefortest: 240 

讓我知道我所做的wrong.my目的是我要開始櫃檯裏面的服務,我需要獲取價值。

回答

0

我想你應該刪除mod 60.這裏有一個例子。

long timeWhenStopped = SystemClock.elapsedRealtime() - chronometer.getBase(); 
    int seconds = (int) timeWhenStopped/1000; 
相關問題