Android Bound Service против AsyncTask - PullRequest
       23

Android Bound Service против AsyncTask

1 голос
/ 18 октября 2011

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

Могу ли я заменить все AsyncTasks на BoundService + AIDL или мне нужно сделать это только с AsyncTask?

Ответы [ 2 ]

2 голосов
/ 12 марта 2013

Сервис - это демон, AsynkTask - фоновый поток

2 голосов
/ 19 октября 2011

Служба запускается в фоновом режиме, но все еще работает в основном потоке (AKA. Поток пользовательского интерфейса), вы получите исключение ANR. в соответствии с API здесь :

Наибольшее заблуждение относительно класса Service на самом деле вращается вокруг того, чем он не является:

  • Услуга не является отдельным процессом. Сам объект Service не подразумевает, что он работает в своем собственном процессе; если не указано иное, он выполняется в том же процессе, что и приложение, частью которого он является.
  • Служба не является потоком. Это не средство само по себе выполнять работу из основного потока (во избежание ошибок Application Not Responding).

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

...