私のアプリケーションでは、以下のこのメソッドにミリ秒単位で時間を渡しますが、このメソッドが呼び出されると、マニフェストでこのインテントに登録したBroadCastRecieverがすぐに呼び出され、開始した瞬間にオーディオ再生が停止されます。(BroadcastRecieverの目的はオーディオの再生を停止することですが、選択した時間に、以下の方法でアラームマネージャーに渡されます...)
getServiceを含む同様の構成を試しましたが、そのコンポーネントにalarmanagerを設定すると、そのコンポーネントでさえすぐに呼び出されます。
再生を停止するBroadcastRecieverは、まだ初期化されていないMediaPlayerオブジェクトを停止しようとするため、nullpointer例外でANRが発生することがあります。これは、再生を停止するpendingintentが設定時にすぐに呼び出されるためです。
private void makeAlarm(long timeInFuture){
Intent INTENT = new Intent("myapp.stopplayback");
AlarmManager alarmManager=(AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
PendingIntent pi = PendingIntent.getBroadcast(this, 0, INTENT, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, timeInFuture, pi);
}