Жизнь сервиса, общие вопросы

Ответить
RoACh
Сообщения: 5
Зарегистрирован: 21 фев 2012, 22:20

Жизнь сервиса, общие вопросы

Сообщение RoACh » 16 июл 2013, 10:35

Всем привет. Я разработчик начинающий, некоторые вещи (нужные) могу пропустить, пока не понадобится, поэтому прошу камнями не бросаться)
Проблема такая. Имеется сервис, который по таймеру запускает задачу с http запросом каждые 10 минут:
[syntax=java]private static Timer timer = new Timer();
private void startService()
{
timer.scheduleAtFixedRate(new Task(), 0, 600000);
}
private class Task extends TimerTask
{
public void run()
{
try
{
MyCode...
}
catch(Exception e)
{

}
}
}

public int onStartCommand(Intent intent, int flags, int startId)
{
startService();
return START_REDELIVER_INTENT;
}[/syntax]
Запускается сервис из приложения, после закрытия приложения он работает нормально. Очищаю память с помощью функции лаунчера, сервис уходит в перезапуск. Проблема в том, что все другие сервисы, которые тоже ушли в перезапуск, возвращаются в рабочий режим максимум за минуту, мой же сервис остаётся в перезапуске. Иногда, правда, он возвращается к жизни, но здравого алгоритма тут я не нашёл, хочет возвращается, не хочет, остаётся)
Теперь несколько вопросов:
1. По какому порядку и вообще, есть ли какой-нибудь порядок в поднятии сервисов у андроида? То есть он как-то по очереди их возвращает к жизни?
2. По каким причинам сервис валяется в перезапуске так долго? Процесс кушает в районе 6 мб, когда работает (в настройках так написано).
Foreground использовать не хочу, не такое важное приложение, но вот оптимизировать это, если возможно, очень желаю, так как сервис является ключевой функцией приложения и в перезапуске он никому не нужен. Может у Вас есть какие-то предложения? Заранее спасибо.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Жизнь сервиса, общие вопросы

Сообщение Mikhail_dev » 16 июл 2013, 11:24

На сколько помню, Foreground является единственной вещью, когда сервис стартует быстро. Другое - непредсказуемо.

RoACh
Сообщения: 5
Зарегистрирован: 21 фев 2012, 22:20

Re: Жизнь сервиса, общие вопросы

Сообщение RoACh » 16 июл 2013, 12:00

Странно то, что не Foreground сервисы стартуют быстро в принципе. Точнее все любые другие сервисы поднимаются раньше моего, мой может часами в перезапуске висеть, остальные, даже те, что кушают больше, поднимаются.

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Жизнь сервиса, общие вопросы

Сообщение neoksi » 16 июл 2013, 16:02

RoACh писал(а):...Имеется сервис, который по таймеру запускает задачу с http запросом каждые 10 минут...
Проблема тут не в сервисе, а в логике работы.

1) Прочитай статьи про AlarmManager, с помощью него реализуется вызов сервиса раз в n-ное время, а не с помощью таймера (для андроида это плохой тон).
2) Сервис без надобности постоянно в памяти держать плохо, он должен запускаться, выполнять операцию и завершаться.

Подумай над такой реализацией, задача оформлена в форме сервиса, который вызывается раз в 10 минут AlarmManager'ом.

RoACh
Сообщения: 5
Зарегистрирован: 21 фев 2012, 22:20

Re: Жизнь сервиса, общие вопросы

Сообщение RoACh » 16 июл 2013, 19:48

neoksi, да да, уже реализовал) Но всё равно спасибо)

Ответить