0

決まった時間(および日付)に新しいクラスを開始する意図があります。このインテントは、固定された日付で開始されますが、再起動するたびにも開始されます (日付と時刻が過去になった後も)。私のコードでは、New.class は 26/12/12 - 21.30 に開始されますが、その後エミュレータを再起動すると、New.class が自動的に開始されます。なんで?ありがとう!

PS: このコードは Autostart クラス内にあります (public void onReceive(Context context, Intent intent) {)

Calendar cal = Calendar.getInstance(TimeZone.getDefault(), Locale.getDefault());
cal.set(Calendar.DATE,26);
cal.set(Calendar.MONTH,Calendar.DECEMBER);  
cal.set(Calendar.YEAR,2012);
cal.set(Calendar.HOUR_OF_DAY, 21);  
cal.set(Calendar.MINUTE, 30);       
cal.set(Calendar.SECOND, 00);       

Intent intent3 = new Intent(context, New.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,intent3, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent);
4

1 に答える 1

1

それは設計によるものです。メソッドのドキュメントをset()参照してください。

「その時間が過去に発生した場合、アラームはすぐにトリガーされます。」

これが発生したくない場合は、アラームをスケジュールしないでください。つまりset()、BroadcastReceiver 内で呼び出すかどうかを自分で確認する必要があります。

于 2012-12-27T09:52:02.310 に答える