如何让我的活动在特定时间做某事

时间:2013-08-31 17:05:07

标签: time android-activity clock

因此,如果我希望我的某项活动在特定的时间和某天做某事我该怎么办? 任何快速描述都会有所帮助。我仍然很新,任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:1)

如果您希望您的活动在某个间隙之间运行,您可以在java中使用Threads。 如果活动想要在某个时间运行,你可以在java中使用TimerTask类。

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class ReportGenerator extends TimerTask {

  public void run() {
    System.out.println("Generating report");
    //TODO generate report
  }

}

class MainApplication {

  public static void main(String[] args) {
    Timer timer  new Timer();
    Calendar date = Calendar.getInstance();
    date.set(
      Calendar.DAY_OF_WEEK,
      Calendar.SUNDAY
    );
    date.set(Calendar.HOUR, 0);
    date.set(Calendar.MINUTE, 0);
    date.set(Calendar.SECOND, 0);
    date.set(Calendar.MILLISECOND, 0);
    // Schedule to run every Sunday in midnight
    timer.schedule(
      new ReportGenerator(),
      date.getTime(),
      1000 * 60 * 60 * 24 * 7
    );
   // Schedule to run every Monday in midnight
   date.set(
      Calendar.DAY_OF_WEEK,
      Calendar.MONDAY
    );
    date.set(Calendar.HOUR, 0);
    date.set(Calendar.MINUTE, 0);
    date.set(Calendar.SECOND, 0);
    date.set(Calendar.MILLISECOND, 0);

    timer.schedule(
      new ReportGenerator(),
      date.getTime(),
      1000 * 60 * 60 * 24 * 7
    );
  }
}   

答案 1 :(得分:0)

这是一个 Python 程序,它可以在秒内准确地执行 my_func 函数中的任何操作。在本例中,它会在明天中午 12 点运行,但 target_date 可以更改为未来的任何日期。

from datetime import datetime
from threading import Timer

today = datetime.today()
target_date = today.replace(day=today.day + 1, hour=12, minute=0, second=0, microsecond=0)
delta_t = target_date - today

microSecs=delta_t.seconds * 1000000 + delta_t.microseconds
secs = microSecs / 1000000

def my_func():
    print("hello world")

t = Timer(secs, my_func)
t.start()