Жизнь сервиса, общие вопросы
Добавлено: 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 использовать не хочу, не такое важное приложение, но вот оптимизировать это, если возможно, очень желаю, так как сервис является ключевой функцией приложения и в перезапуске он никому не нужен. Может у Вас есть какие-то предложения? Заранее спасибо.
Проблема такая. Имеется сервис, который по таймеру запускает задачу с 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 использовать не хочу, не такое важное приложение, но вот оптимизировать это, если возможно, очень желаю, так как сервис является ключевой функцией приложения и в перезапуске он никому не нужен. Может у Вас есть какие-то предложения? Заранее спасибо.