Android запустить длинный процесс из строки состояния - PullRequest
0 голосов
/ 12 августа 2011

У меня есть приложение, которое, как только пользователь запускает приложение, запускает длительный процесс, такой как загрузка необходимых файлов и настройка всего, а что нет. Я хотел бы переместить процесс в фоновый режим и показать уведомление в строке состояния во время работы процесса.

Какой была бы моя лучшая стратегия для поддержания процесса во время загрузки файлов, а что нет. Я читал об услугах, но также слышал, что их легко убить? Должен ли я использовать службу или просто запустить поток с максимальным приоритетом и просто выдать уведомление и закрыть его, когда процесс закончится?

Что лучше, спасибо за любую помощь. Между прочим, процесс занимает около десяти минут не дольше, чем требуется, чтобы скачать rom в rom manager. Просто хочу, чтобы все те же настройки, спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 12 августа 2011

Сервис - это именно то, что вы хотите. Вы можете указать, насколько приоритетным является ваш сервис при его создании (см. Пост @ theisenp).

Что касается перемещения Activity в фоновый режим и его повторного открытия позже - я рекомендую запустить службу, а затем фактически остановить приложение, используя метод finish(). Затем, как только услуга будет завершена, перезапустите свою деятельность с помощью Intent или передайте Intent, который может быть обработан с помощью BroadcastReceiver.

0 голосов
/ 12 августа 2011

Похоже, что Foreground Service - это именно то, что вам нужно. Когда вы создаете его, в строке состояния помещается уведомление о том, что он запущен. Служба также имеет высокий приоритет, поэтому она не будет отменена.

Из документации для флага переднего плана:

public final void startForeground (int id, Notification notification)

Make this service run in the foreground, supplying the ongoing notification
to be shown to the user while in this state. By default services are background,
meaning that if the system needs to kill them to reclaim more memory (such as to
display a large page in a web browser), they can be killed without too much harm.
You can set this flag if killing your service would be disruptive to the user,
such as if your service is performing background music playback, so the user
would notice if their music stopped playing.

Остальную часть документации вы можете посмотреть здесь .

...