Вопрос

Я ищу наиболее подходящий класс в качестве диспетчера AsyncTasks, вызываемого из моих действий.

Я думаю, это может быть что-то из этого:

  1. подкласс Приложение;
  2. подкласс Услуга;
  3. мой собственный статический вещи.

Как по мне - проще реализовать 3-й вариант.Но вопрос в том, будет ли он более «смертоносным», чем Сервис или Приложение?Также очень интересно, что проживет дольше - Приложение или Сервис?Я предполагаю, что приложение живет до тех пор, пока живет процесс приложения (задача с точки зрения Android).

Так что в основном мне нужно ранжировать эти варианты по их «смертоносным» качествам, потому что я хотел бы полагаться на наиболее «статичные» вещи.

ОБНОВЛЯТЬ:

Изначально вопрос был задан в 2010, когда (1) Android был новой платформой для разработчиков и (2) документация Google была слишком расплывчатой ​​(в некоторых случаях даже вводила в заблуждение) о жизненном цикле компонентов приложения и всем жизненном цикле процесса приложения.

Это было полезно?

Решение

Вам обязательно следует использовать Услуга.

Основная причина этого - Service имеет свои собственные документы жизненный цикл, а Приложение - нет. Application экземпляр, как и любая из ваших статических переменных, может быть уничтожен системой практически в любой момент, вы не получите никакого обратного вызова и не сможете остановить этот процесс.Таким образом, любые несохраненные данные (все статические переменные) будут потеряны.

С другой стороны, Service не может быть уничтожен системой молча, по крайней мере onDestroy() метод должен быть вызван первым.Имея такой обратный вызов, вы можете сохранить свое состояние в некоторой постоянной памяти (например, в SharedPreferences, файле, базе данных и т. д.) и восстановить это состояние при следующем запуске вашего приложения или службы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top