指定時刻にタイマーの処理を行う方法について質問です。

現状、Serviceの中でHandlerのスレッドを起こして、
指定時刻と現在時刻の差分を取ってからHandler#postDelayedの
引数に指定しています。
またスリープ中に止まらないようにWAKE_LOCKも使用しているのですが、
決まった時間に1回だけ発動するタイマー処理として、この方法は
正しいのでしょうか?WAKE_LOCKを使わない方法とかありますか?