2017-03-01 44 views
0

我想每分鐘撥打一個功能或API(在點上)。Android設備上每分鐘撥打電話功能

例子: 如果我在上午06時05分15秒啓動我的應用程序,然後我需要在上午6時07分00秒再次致電上午06時06分00秒的方法,等等..

目前,我使用的時間調度

private void callTimer() 
{ 
    final Timer myTimer = new Timer(); 
    myTimer.schedule(new TimerTask() { 
     @Override 
     public void run() { 
      // getCurrentTime(); 

      Log.d("=============>>>>","timer triggered"); 
     } 
    }, 0,60000); 

} 

但這調用該函數一分鐘後,我啓動應用程序。

示例:如果當前時間是06:06:15 AM,它將在06:07:15 AM再次調用該方法。我需要在點上調用它(即在06.07.00 AM 45秒後)。

可以使用定時器還是應該使用AlarmManager? 請幫忙。

+0

在每個定時器上,而不是60000毫秒的調度,60000-time_in_ms%60000毫秒的睡眠。換句話說,在一分鐘內設置剩餘時間的每個超時。 –

+0

如果您想重複執行任務,請使用Alarm Manager在特定時間運行,例如上午06:07:00和此後的每分鐘。 –

+0

爲此服務.....它會連續運行 –

回答

0

可以實現從這個..

Calendar c = Calendar.getInstance(); 
int second = c.get(Calendar.SECOND); 

int stopFor = 60 - second; 


new Handler().postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        callTimer(); 
       } 
      }, stopFor * 1000); 
0
new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     YourFunction(); 
    } 
}, 3100);//your time 
0

使用下面的代碼。

Handler handler = new Handler(); 
    handler.post(yourRunnable);// this will call immediately and run youRunnable defined in post. 

    Runnable yourRunnable = new Runnable() { 
     @Override 
     public void run() { 
      callTimer(); 
      handler.postDelayed(yourRunnable,60000);// this will call runnable every minute. 
     } 
    } 

//If you want to stop call your function every minute the do following. 

    handler.removeCallback(yourRunnable);