そんなときはAlarmManagerを使います。 使い方はPendingIntentを作ってAlarmManagerを取得してsetRepeatingする感じ。 一回こっきりでいい場合は、setメソッドでもいいみたいですね。
詳細はAlarmManagerのドキュメントを見よう。
AlarmManager | Android Developers
ということで、こんなコードを書いてやれば現在時間から1分間隔でIntentが投げられるようになります。今回の場合はサービスをキックしています。
Intent intent = new Intent(this, LogService.class); intent.setAction("LogServiceAction"); PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); am.setRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(), 60 * 1000, pendingIntent);
Activityでやれば、アプリを起動したあとから有効になります。端末再起動時や、アプリアップデート時にリセットされるらしいので、それがいやならしかるべきIntentを受け取るReceiverを作ってそこで上記処理を書けばいいっぽいです。
ふむふむ。