2013-07-28 4 views
0

У меня есть AsyncTask, который создает Notification и обновляет его во время выполнения. Но когда пользователь существует, я использую приложение, пока работает AsyncTask, я теряю Context, и я больше не могу его обновлять. Итак, было бы неплохо изменить функцию кнопки «Назад» на ту же функцию, что и кнопка «Дом», когда запущена программа AsyncTask? Или какой еще способ получить доступ к Context?Уведомление об изменении в AsyncTask

ответ

1

Я стараюсь избегать AsyncTasks по таким причинам. Я обычно использую их для вещей, которые, если либо действие, либо задача погибают, ничего не теряется. Для вещей, которые я хочу удостовериться, что закончит работу, если действие закончится или возникнет проблема с фоновым работам, вы, вероятно, должны использовать Сервис. Платформа имеет базовый встроенный, называемый IntentService. Это должно хорошо работать для вашей ситуации, поскольку служба будет иметь свой собственный контекст и может обновлять и отслеживать сами уведомления.

Другая альтернатива, которую я бы не рекомендовал, но это возможно, состоит в том, чтобы основной Application содержал ссылку на себя в статической переменной. Это также даст Context, что задача может использовать.

+0

, так что было бы неплохо просто положить AsyncTask в IntendService и просто запустить его оттуда? – maysi

+0

Вы можете сделать это, если это действительно долго работающая задача и отслеживать ее в сервисе. Однако, поскольку вы просто обновляете уведомление, а IntentService уже запускает все, что отделяет от потока пользовательского интерфейса, вам не нужно. – Qberticus

Смежные вопросы