Как остановить службу сигнализации, когда приложение останавливается? - PullRequest
0 голосов
/ 29 мая 2011

У меня есть приложение с рабочим процессом, который вызывает много действий, некоторые из которых он завершает, а другие оставляют их активными, когда пользователь проходит через него.НО я не могу отключить службу сигнализации, которая продолжается, даже когда нажата кнопка «Домой» и приложение отключено.

Да, конечно - принудительное закрытие в настройках очень хорошо остановит службу сигнализации (это единственный способ убитьЭто).Я не могу остановить тревогу из моей прикладной программы, так как ничто не говорит мне, когда приложение было закрыто.

Ни один из методов жизненного цикла onDestroy () или on Stop () не работает, потому что кнопка home может быть нажата во время любого из 15 действий, а onDestroy () не вызывается в течение длительного времени после какого-либо действия.1005 *

Ответы [ 3 ]

0 голосов
/ 29 мая 2011

Когда вы нажимаете кнопку «Домой», ваше приложение не закрывается и не должно выключаться.Он "заморожен" при звонке на onSaveInstanceState(Bundle).Если щелкнуть значок приложения, оно будет перезапущено и возобновлено так же, как если бы в системных часах произошла гигантская пауза (или, если она была прервана системой, заново созданный из набора, установленного в onSaveInstanceState).Обычно вы включаете приостановку или отмену активности, связанной со временем, в onPause, потому что, в некотором смысле, время останавливается для вашего приложения на этом этапе.приложение выходит?Я подумал, что их смысл в том, чтобы вызывать что-то в вашем приложении в определенное время, даже если оно не запущено.

0 голосов
/ 15 ноября 2013

Просто сделай так ....

AlarmManager alarm;
PendingIntent pintent;

 Calendar cal = Calendar.getInstance(); 
 cal.add(Calendar.SECOND, 10);              
 Intent intent = new Intent(this, TestService.class);           
 pintent = PendingIntent.getService(this, 0, intent, 0);
 alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
 int i;
 i=30;
 alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), i* 1000, pintent);
 System.out.println("service going to start-----------");
 startService(new Intent(getBaseContext(), TestService.class));  // Here start your service

Если вы хотите остановить свою службу, это означает, что вы должны остановить свою службу сигнализации один раз. В методе onBackPressed () кнопка «ОК» завершит вашу деятельность. В этой кнопке вы должны добавить следующий код.

     alarm.cancel(pintent);

Это остановит вашу службу добавления будильника при выходе из приложения. Всего наилучшего.

0 голосов
/ 29 мая 2011

НО я не могу отключить службу сигнализации, которая продолжается, даже если нажата кнопка «Домой» и приложение отключено.

Тогда не регистрируйте будильник. AlarmManager предназначен для периодического выполнения вашего кода, когда он еще не запущен. Для чего-то, что находится исключительно в деятельности, используйте postDelayed().

...