3

毎日午前 3 時に実行したいコードがあります。Service Class Documentationを読みましたが、AlarmManager を使用してインテント (アクティビティまたはサービスだと思いますか?) を起動し、そのインテントでメッセージを作成して Android 通知領域に投稿できるようです。

Calendar threeAM = Calendar.getInstance();
threeAM.set(Calendar.HOUR_OF_DAY,2);
threeAM.set(Calendar.MINUTE,0);
threeAM.set(Calendar.SECOND,0);
threeAM.set(Calendar.MILLISECOND,0);
AlarmManager alarmManager =
         (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, myNotifier.class);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, threeAM.getTimeInMillis(),
        AlarmManager.INTERVAL_DAY, PendingIntent.getService(context, 1, i , 0));
Log.i("Service TEST", "Alarm set?" );

コードは問題なく実行されますが、アラームが設定されているという兆候はなく、アクティビティは開始されません。動作することがわかっているアクティビティを使用しています。logcatでは何もせず、try/catchでラップしようとしました...

4

2 に答える 2

2

OS の起動が完了した瞬間にアプリケーションが起動するように、アクティビティを登録してブート ブロードキャスト レシーバーを受信する必要があると思います。ここにリンクがあります http://www.androidenea.com/2009/09/starting-android-service-after-boot.html

通知に関しては役に立ちませんが、アクティビティが開始されないという問題は解決します...

于 2011-02-19T21:06:31.360 に答える
1

コードは、午前 3 時より前に実行した場合にのみ機能します。そうしないと、過去にアラームを設定することになります。

于 2011-02-19T21:07:47.770 に答える