smartfun,
1) "Настройки при заряде батареи не сохраняются." - я действительно не писал сохранение/восстановление этих настроек.
Т.е., если в главном окне выбрать "по заряду батареи", затем в этом окне изменить какие-то параметры (например, критический уровень батареи), затем запустить этот сервис или выйти из приложения, то при следующем входе в окно настроек все параметры будут установлены в начальные значения, а не те значения, которые Вы установили ранее.
Сохранение/восстановление этих настроек, конечно, можно добавить, но я не уверен в необходимости.
Готов услышать мнение по этому поводу других пользователей.
2) "Сервис то виден, то скрыт." - Для запуска сервиса я использую стандартную андроидную команду из класса AlarmManager:
setRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)
В этой команде я указываю андроиду: что запустить, когда запустить и с какой периодичностью повторять. А андроид уже сам обеспечивает запуск в назначенное время того сервиса, что я указал. Т.е. в указанное время (иногда с задержкой в несколько минут) андроид запускает мой процесс, который проверяет необходимость выключения (например, что уровень заряда батареи ниже критического). Если условие выполняется, то мой процесс запускает активити (окно) о том, что через несколько секунд устройство выключится (работает таймер обратного отсчета времени). Если пользователь не нажал кнопку отмены, то по истечению таймера выполняется команда на выключение:
Runtime.getRuntime().exec(new String[] { "su", "-c", "reboot -p" });
Если честно, я не знаю, должен ли андроид всегда показывать в списке запущенных процессов тот процесс, который он сам запустит в указанное ему (андроиду) время.
Думаю, - это не главное. Важно, чтобы процесс запускался (возможно, как уже писал, с небольшой задержкой в несколько минут).
3) "После перезагрузки сервис хоть и запускается, но отключение не срабатывает, и сервис спустя несколько минут сам закрывается."
После перезагрузки (точнее, в момент включения устройства) приложение (оно прописано в автозагрузку) считывает из хранилища заранее сохраненные параметры запуска андроидного сервиса (время запуска, периодичность) и запускает все ту же андроидную команду из класса AlarmManager:
setRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation) ,
где указано: что запустить, когда запустить и с какой периодичностью повторять.
А дальше все как в пункте 2.
smartfun, я не понял, что значит " отключение не срабатывает". Не выскакивает окно о том, что сейчас произойдет выключение (окно с таймером отсчета обратного времени)?
Или окно выскакивает, но по истечению таймера устройство не выключается?
smartfun, я тестировал работу приложения на нескольких устройствах с андроид 4.1.1, 4.3, 4.4.2, 5.1.0. У меня все работает нормально. Но это не значит, что и на других устройствах все будет работать нормально. К сожалению, совпадение операционной системы не гарантирует, что все работает одинаково.
Т.к. я не могу повторить ошибку, то мне трудно ее устранить.
smartfun, если у вас есть возможность и желание помочь в решении проблемы, то лучше написать мне на почту (контакты на сайте:
http://gruv-apps.com/i…p/ru/contact-menu-ru ).
Я не обещаю, что решу проблему, но мы можем попробовать.
Сообщение отредактировал _GRuV_ - 24.05.15, 14:41