Мне нужна фоновая служба, которая обновляет местоположение каждые 20 минут и автоматически останавливается через 2 часа. Я могу создать будильник, который запускает службу через 15 минут, она работает нормально, но я не могу автоматически остановить службу или отменить диспетчер тревог через 2 часа. Я могу остановить службу, нажав кнопку в любое время, но я хочу, чтобы через 2 часа фоновая служба автоматически останавливалась.
Только проблема в том, как автоматически остановить фоновую службу через 2 часа.
Есть ли какие-либо предложения или решения........
КОД, КОТОРЫЙ Я ИСПОЛЬЗОВАЛ ДЛЯ ЗАПУСКА БУДИЛЬНИКА,
ToggleButton toggle = (ToggleButton) findViewById(R.id.togglebtn);
toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
if (selectedupdate != null) {
System.out.println(selectedupdate);
if (selectedupdate.equals("20 Minutes")) {
updateInterval = (1 * (60000));
} else if (selectedupdate.equals("30 Minutes")) {
updateInterval = (2 * (60000));
} else if (selectedupdate.equals("60 Minutes")) {
updateInterval = (60 * (60000));
} else if (selectedupdate.equals("90 Minutes")) {
updateInterval = (90 * (60000));
} else if (selectedupdate.equals("120 Minutes")) {
updateInterval = (120 * (60000));
}
viewgps.setBackgroundColor(Color.parseColor("#008000"));
Toast.makeText(getApplicationContext(),
"Location Updates Activate", Toast.LENGTH_SHORT)
.show();
Calendar calendar = Calendar.getInstance();
Intent myIntent = new Intent(PersonalGpsScreen.this,
MyBroadcastReceiver.class);
pendingIntent = PendingIntent.getBroadcast(
PersonalGpsScreen.this, 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), updateInterval,
pendingIntent);
} else if (selectdeactivate != null) {
System.out.println(selectdeactivate);
if (selectdeactivate.equals("6 Hours")) {
deactivateinterval = (3 * (60000));
} else if (selectdeactivate.equals("12 Hours")) {
deactivateinterval = (12 * (60000) * (60));
} else if (selectdeactivate.equals("24 Hours")) {
deactivateinterval = (24 * (60000) * (60));
} else if (selectdeactivate.equals("48 Hours")) {
deactivateinterval = (48 * (60000) * (60));
}
cancelAlarm();
}
} else {
viewgps.setBackgroundColor(Color.parseColor("#ff0000"));
Toast.makeText(getApplicationContext(),
"Location update deactivated", Toast.LENGTH_SHORT)
.show();
Intent myIntent = new Intent(PersonalGpsScreen.this,
MyBroadcastReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(
PersonalGpsScreen.this, 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(sender);
// stopService(new Intent(getApplicationContext(),
// MyAlarmService.class));
Intent stopServiceIntent = new Intent(getBaseContext(),
LocationService.class);
getBaseContext().stopService(stopServiceIntent);
}
}
});
UpdateInterval — это время, выбранное пользователем с помощью счетчика, для тестирования я упомянул 20 минут = 1 минута, а deactivateinterval — это время, когда фоновая служба останавливается, оно снова выбирается пользователем.