Как я могу запустить службу в отдельном потоке? - PullRequest
8 голосов
/ 23 апреля 2011

Мне нужно запустить службу в отдельном потоке.Это потому, что он обращается к веб-сервису, который может занять 5-10 секунд, и я не хочу получать ANR.Я также буду связываться с этим сервисом.Я нашел способ запустить службу в отдельном потоке с чем-то вроде:

Thread t = new Thread(new Runnable() {

            public void run() {
                //Launch and/or Bind to service here
            }
        });
        t.start();

Однако я считаю, что это только запускает код запуска в новом потоке, в то время как сама служба работает в основном потоке.Так как же мне на самом деле запустить весь код из службы в другом потоке?

Заранее спасибо

1 Ответ

7 голосов
/ 23 апреля 2011

Вы можете использовать IntentService

IntentService - это базовый класс для служб, которые обрабатывают асинхронные запросы (выраженные в виде содержимого) по требованию.Клиенты отправляют запросы через вызовы startService (Intent);служба запускается по мере необходимости, обрабатывает каждое намерение по очереди, используя рабочий поток, и останавливается, когда заканчивается работа

http://developer.android.com/reference/android/app/IntentService.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...