2016-06-22 20 views
-1

私は私のアプリでアラームを持っています。Android AlarmManagerコードが正しく動作しないのはなぜですか?

public class MainActivity extends AppCompatActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.curentTimeMillis()); 
     calendar.set(Calendar.HOUR_OF_DAY, 11); 
     calendar.set(MINUTE, 11); 

     Intent intent = new Intent(this, AlarmReceiver.class); 
     PendingIntent pendingIntent = Pending.getBroadcast(this, 0, intent, 0); 

     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
     alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntente); 
    } 
} 

これは私のAlarmReceiver.class

public class AlarmReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent){ 
     SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); 
     System.out.println("ALARM: " + sdf.format(new Date())); 
    } 
} 

であると私のAndroidManifest.xmlに私は問題がある。このライン

<receiver android:name=".main.AlarmReceiver" /> 

を持っています私が設定した時間にアラームが鳴らないこと。私はアラームを設定しました

calendar.set(Calendar.HOUR_OF_DAY, 11); 
calendar.set(MINUTE, 5); 

その後、アラームは11:11:29に警告しました。それから私は、その後

calendar.set(Calendar.HOUR_OF_DAY, 11); 
calendar.set(MINUTE, 20); 

のアラーム11:26:29で警戒警報を設定します。それから私は、その後

calendar.set(Calendar.HOUR_OF_DAY, 11); 
calendar.set(MINUTE, 29); 

のアラーム11:41:29で警戒警報を設定します。

午前中はこのように続きました。しかし、私は適切な10秒で警報アラーム完璧次に、このライン

alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, (SystemClock.elapsedRealtime()+10000), pendingIntent); 

で、このライン

alarmManager.setInexactRepeating(AlarmManager.RTC, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntente); 

を交換する場合。

何が起こっていますか?

答えて

1

ドキュメントごとに、setInexactRepeatingは設計上正確ではありません。デバイスを何度も目覚めさせることによってバッテリの放電を減らすために、内部的にいくつかのアラームを同時に発生させて、一部のクライアントに誤ったアラーム時間を与えようとします。 https://developer.android.com/reference/android/app/AlarmManager.html#setInexactRepeating(int,%20long,%20long,%20android.app.PendingIntent)

+0

私はドキュメントを読むことにそれを忘れていました。それを指摘してくれてありがとう。 – Brian

関連する問題