解決しないと思ったら、問題をコメントしてください。ブロードキャストレシーバが毎回呼び出されます
真夜中にsqliteテーブルを更新して、ブロードキャスト受信者に真夜中に自動的にヒットするようにしたい、つまりアプリを起動しないでください。しかし、私はアプリを起動するたびにを更新しています。
コード: -
onCreate()
private void setTheTimeToUpdateTables(Context context) {
Log.i("Update table function","Yes");
AlarmManager alarmManager=(AlarmManager) getSystemService(ALARM_SERVICE);
Intent alarmIntent=new Intent(context,UpdateTables.class);
PendingIntent pendingIntent=PendingIntent.getBroadcast(context,0,alarmIntent,PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pendingIntent);
Calendar alarmStartTime = Calendar.getInstance();
alarmStartTime.setTimeInMillis(System.currentTimeMillis());
alarmStartTime.set(Calendar.HOUR_OF_DAY, 0);
alarmStartTime.set(Calendar.MINUTE, 1);
alarmStartTime.set(Calendar.SECOND, 0);
System.out.println("Updating table time "+alarmStartTime);
System.out.println("Time in millseconds "+alarmStartTime.getTimeInMillis());
alarmManager.setInexactRepeating(AlarmManager.RTC,alarmStartTime.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent);
Log.d("Alarm","Set for midnight");
}
パブリッククラスUpdateTablesにmainActivity.javaに関数を呼び出すはBroadcastReceiverを拡張{
DbHelper dbHelper;
ArrayList<ListMedicine> reminderInfo;
@Override
public void onReceive(Context context, Intent intent) {
dbHelper=new DbHelper(context);
Log.i("Service Start", CalculateDaysService.TAG);
context.startService(new Intent(context,CalculateDaysService.class));
Log.i("Done","Yes");
}
}
問題: - 1.この放送受信機私はいつでも私はアプリを起動している毎回呼び出されます。 2.真夜中に呼び出されません。
もし正確なメソッドを設定すれば、ドキュメントからわかるように@Karakuri –
@AnkurKhandelwalを呼び出すので、次の起床をスケジュールするために作業が終わったら 'setExact()'をもう一度呼び出してください。 – Karakuri