Я разрабатываю приложение, в котором пользователю сначала будет представлен простой пользовательский интерфейс с днями и таймингами. пользователь будет выбирать тайминги против каждого дня. и нажмите кнопку «Готово». Теперь это приведет к срабатыванию служб будильника для запуска каждый день в соответствии с выбранными таймингами. (и выключит Bluetooth-устройство в эти тайминги). прямо сейчас я использую отдельную услугу за каждый день (инстинкт новичка). Приложение работает нормально. Теперь я хочу, чтобы при нажатии пользователем кнопки «Готово» приложение должно продолжать работать в фоновом режиме, и когда пользователь снова нажимает значок приложения и нажимает кнопку «По умолчанию», он должен останавливать все службы. Как я могу это достичь? Код для запуска каждого воскресенья следующий:Активность и Сервис в том же андроидном приложении
time interval of 7 x days for the alarm to repeat every 7 days
long interval = 1000 * 60 * 60 * 24 * 7; // to make the alarm repeat at every 7 days
//getting values for hours, mins and AM/PM from the spinner boxes for sunday
index = sunHr.getSelectedItemPosition();
int sunHrInt = Integer.parseInt(hrList[index]);
index = spinnerSunMin.getSelectedItemPosition();
int sunMinInt = Integer.parseInt(minList[index]);
index = spinnerSunAmPm.getSelectedItemPosition();
//conversion of time to 24 hrs format
if (ampmList[index] == "AM") //(convert to 24 hr format)
{
if (sunHrInt == 12)
{
sunHrInt = 0;
}
else
{
if (sunHrInt != 12)
sunHrInt = sunHrInt + 12;
}
}
//setting current calender
Calendar cur_cal = new GregorianCalendar();
cur_cal.setTimeInMillis(System.currentTimeMillis());//set the current time and date for this calendar
//setting calender for sunday
Calendar calSun = new GregorianCalendar();
calSun.add(Calendar.DAY_OF_YEAR, cur_cal.get(Calendar.DAY_OF_YEAR));
calSun.set(Calendar.HOUR_OF_DAY, sunHrInt);
calSun.set(Calendar.MINUTE,sunMinInt);
calSun.set(Calendar.SECOND, 0);
calSun.set(Calendar.MILLISECOND, cur_cal.get(Calendar.MILLISECOND));
calSun.set(Calendar.DATE, cur_cal.get(Calendar.DATE));
calSun.set(Calendar.MONTH, cur_cal.get(Calendar.MONTH));
//finding out when the sunday is to occur from today
days = 8 - calSun.get(Calendar.DAY_OF_WEEK); // how many days until Sunday
if (days >= 7)
{
days = days - 7;
}
calSun.add(Calendar.DATE, days);
//finally triggering the intent
Intent myIntentSun = new Intent(AndroidAlarmService.this, SunOffAlarmService.class);
pendingIntentSun = PendingIntent.getService(AndroidAlarmService.this, 0, myIntentSun, 0);
AlarmManager alarmManagerSun = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManagerSun.set(AlarmManager.RTC_WAKEUP, calSun.getTimeInMillis(), pendingIntentSun);
Вы уже делаете то, что хотите, поскольку вы сказали, что создали пользовательский интерфейс и службу на каждый день, вы можете упростить его, создав пользовательский интерфейс и единую службу для обработки всех связанных событий в вашей службе. Используйте предпочтение для хранения пользовательского выбора, и на основе настроек вы можете сделать свою услугу. В чем проблема? – Sandeep
в порядке. позвольте мне объяснить, где проблема. Я запускаю приложение на эмуляторе, с помощью которого проверяет, работает ли служба в определенный день и время (показывая Toasted msg, поскольку эмулятор не поддерживает синий зуб, который я могу отключить и посмотреть). Теперь мой вопрос заключается в том, что мои службы все еще будут работать, когда пользователь выйдет на дом или на любой другой экран мобильного устройства? если да, то почему мне нужно предпочтение? – learner
yes service - фоновый процесс, который всегда работает в фоновом режиме, в то время как пользователь использует другой материал для мобильных устройств ... и предпочтение необходимо для хранения пользовательских настроек, то есть другое, что не связано с функциональностью службы ... – Sandeep