Я хочу перезапускать свой мобильный телефон ежедневно с 12:00 до 3:00. Вот вещи, созданные одним диспетчером аварий, которые создают случайное время между 12:00 и 3:00 и передают диспетчеру аварийных сигналов, который правильно работает, перезагрузив мой мобильный телефон. Создание случайного времени во время восстановления мобильного телефона и создание другого времени, кроме вещей, когда я создал другое время, если, если время уже прошло, оно будет перемещено на следующий день. Я не хочу пропустить этот день перезагрузить мой мобильный телефон. Значит, можно отменить эту тревогу, создать новую или любую другую идею?
public class MainActivity extends AppCompatActivity {
AlarmManager alarmManager;
PendingIntent pendingIntent;
private int hour;
private int min;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent alarmIntent = new Intent(this, MyBroadCastReceiver.class);
pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
hour = generateRandomIntIntRange(0 , 2);
min = generateRandomIntIntRange(0, 59);
System.out.println("hour: " + hour);
System.out.println("min: " + min);
startAlarm(hour , min);
}
private void startAlarm( int hour, int min) {
Calendar calendar = Calendar.getInstance();
Calendar calendar1 = (Calendar) calendar.clone();
calendar1.setTimeInMillis(System.currentTimeMillis());
calendar1.set(Calendar.HOUR_OF_DAY, hour);
calendar1.set(Calendar.MINUTE, min);
calendar1.set(Calendar.SECOND, 0);
calendar1.set(Calendar.MILLISECOND, 0);
if(calendar1.compareTo(calendar) <=0){
calendar1.add(Calendar.DATE, 1);
}
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar1.getTimeInMillis(), AlarmManager.INTERVAL_DAY,pendingIntent);
}
}
}
public class MyBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
// did some code and restarting mobile, which is working fine, assume it will start MainActivity-> onCreate, where random time will generate
} catch (Exception e) {
e.printStackTrace();
}
}
}
Я ожидаю, что выходное значение - это случайное время между 12 и 3 днями, оно должно быть перезапущено, но перезапустить мобильное устройство, если пройдет время.
Пример: когда первый мобильный час запускается в 12:30 утра. Первый день: тигр в 12:30 и время генерируется в 2:30 утра. Первый день: тигр в 2:30 утра и время генерируется в 12:55. Третий день в 12 часов не бывает. : 55 утра, но тигр 4-й день 12:55 утра. Я пропускаю один день (Третий день: 12: 55 утра) здесь, я не хочу пропустить ни одного дня.
Я подумал, это может быть решением, если удалить тревогу после получения, это хорошая идея? и как это сделать?