Какой компонент Android самый «смертоносный»?
-
26-09-2019 - |
Вопрос
Я ищу наиболее подходящий класс в качестве диспетчера AsyncTasks, вызываемого из моих действий.
Я думаю, это может быть что-то из этого:
- подкласс Приложение;
- подкласс Услуга;
- мой собственный статический вещи.
Как по мне - проще реализовать 3-й вариант.Но вопрос в том, будет ли он более «смертоносным», чем Сервис или Приложение?Также очень интересно, что проживет дольше - Приложение или Сервис?Я предполагаю, что приложение живет до тех пор, пока живет процесс приложения (задача с точки зрения Android).
Так что в основном мне нужно ранжировать эти варианты по их «смертоносным» качествам, потому что я хотел бы полагаться на наиболее «статичные» вещи.
ОБНОВЛЯТЬ:
Изначально вопрос был задан в 2010, когда (1) Android был новой платформой для разработчиков и (2) документация Google была слишком расплывчатой (в некоторых случаях даже вводила в заблуждение) о жизненном цикле компонентов приложения и всем жизненном цикле процесса приложения.
Решение
Вам обязательно следует использовать Услуга.
Основная причина этого - Service
имеет свои собственные документы жизненный цикл, а Приложение - нет. Application
экземпляр, как и любая из ваших статических переменных, может быть уничтожен системой практически в любой момент, вы не получите никакого обратного вызова и не сможете остановить этот процесс.Таким образом, любые несохраненные данные (все статические переменные) будут потеряны.
С другой стороны, Service
не может быть уничтожен системой молча, по крайней мере onDestroy()
метод должен быть вызван первым.Имея такой обратный вызов, вы можете сохранить свое состояние в некоторой постоянной памяти (например, в SharedPreferences, файле, базе данных и т. д.) и восстановить это состояние при следующем запуске вашего приложения или службы.