2013-05-08 58 views
0

嗨我有一個全屏應用程序; 首先 我想例如。 6pm隱藏所有的主題,然後再顯示一個特定的時間,每天重複它。只是它的調用取決於設備的時間?從每天的時間調用方法

第二個是我想每15分鐘發送狀態和GPS信息,我有一個方法,但我怎麼能每15分鐘發送一次?

+0

嘗試使用警報管理器 – 3h3 2013-05-08 09:26:24

+0

只是谷歌的alarmmanager,你會發現那裏的例子很多 – 2013-05-08 09:29:54

回答

1

要安排一個循環任務,您可以使用Timer和TimerTask。

http://developer.android.com/reference/java/util/Timer.html

EG。對於你的第二個問題,做一些事情,每15分鐘從現在做起:

long INTERVAL_MSEC = 900000; 
Timer timer = new Timer(); 
TimerTask task = new TimerTask() { 
    public void run() { 
     sendStatusAndGPS(); 
    } 
} 
timer.scheduleAtFixedRate(task, 0, INTERVAL_MSEC); 

關於第一個問題,你可以通過而非起始時間作爲第二個參數timer.scheduleAtFixedRate。

您也可以使用處理程序和postAtTime方法。

+0

我發現timertask例子只有計時器,我希望它的時鐘時間。 例如。在下午6點可見虛假,每天早上9點可見。 – 2013-05-08 12:21:07

0

爲nitegazer2003說,你可以使用:

公共無效調度(TimerTask的任務,日期時,長週期);

,但如果你想開始重複計時器在一天中的特定時間,如果你想計時器,在6重複每天都可以做這樣的事情,你必須設置時可變, 例如:

// get today date 
    Date curent_time= new Date(System.currentTimeMillis()); 
    Calendar cal = Calendar.getInstance(); 
    cal.setTime(curent_time); 
    int hour = cal.get(Calendar.HOUR); 
    int min = cal.get(Calendar.MINUTE); 
    int sec = cal.get(Calendar.SECOND); 

    long when = (6 * 3600) 
    - ((hour*3600) + (min *60) + sec); 
// interval should be based on miliseconds so 
    long interval = 24*60*60*1000; 
    timer.scheduleAtFixedRate(new testtimertask(), when, interval); 

但是您需要考慮curent_time並未超出您的開始時間,如果是這樣,您應該使用另一個公式來計算何時啓動計時器。