Выполнение функции в определенный час - PullRequest
0 голосов
/ 20 мая 2011

Я хочу выполнить некоторую функцию в определенный час, выбранный TimePicker.

Я могу использовать Handler следующим образом:

Handler myHandler = new DoSomething();
Message m = new Message();
myHandler.sendMessageDelayed(m, delay);

class DoSomething extends Handler {
    @Override
    public void handleMessage(Message msg) {
      MyObject o = (MyObject) msg.obj;
      //do something here
    }
}

И загрузить параметр «delay» с помощью: selected_wanted_hour - current_hour ИЛИ проверьте текущее время через некоторый интервал и вызовите функцию, когда придет время.

Но есть ли какой-нибудь обработчик-объект, который может занять определенное время и вызвать операцию в это время?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 20 мая 2011

Вы можете воспользоваться службой AlarmManager:

http://developer.android.com/reference/android/app/AlarmManager.html

Образец краткости:

Intent intent = new Intent(this,<Activity.class/ or type of broadcast receiver>);
PendingIntent pi = PendingIntent.get(...)
AlarmManager am = getSystemService(Context.ALARM_SERVICE);
int delay = 1000; // 1 second
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + delay, pi);

больше информации о PendingIntent http://developer.android.com/reference/android/app/PendingIntent.html

1 голос
/ 20 мая 2011

Почему вы не используете сам обработчик?Просто передайте timePickerTime - currentTime как задержку.
Также есть Таймер с методом schedule(TimerTask task, Date when).

...