Ответ 1
Какая наилучшая практика для этого?
Это будет зависеть от того, что "this" и где эта работа выполняется.
Если "this" является "асинхронной работой", вы будете использовать потоки в одной форме или модуле:
-
Если ваши HTTP-операции управляют пользовательским интерфейсом, вы можете использовать
AsyncTask
, чтобы вы могли безопасно обновлять интерфейс сonPostExecute()
-
Если ваши операции HTTP выполняются исключительно в фоновом режиме, и вы хотите сделать это за один раз, используйте
IntentService
, у которого есть собственный фоновый поток и рабочая очередь -
Если ваши операции HTTP выполняются исключительно в фоновом режиме, и вы хотите сделать это вовремя, и вы обеспокоены тем, что устройство должно оставаться без сна, пока все это происходит, рассмотрите мой
WakefulIntentService
-
Если ваши операции HTTP выполняются исключительно в фоновом режиме, но вы чувствуете, что хотите сделать несколько за раз, переместите свой собственный
Service
, который используетExecutor
с вашим собственным пулом потоков, убедившись, что вы завершаете эту службу, когда работа выполняется (как это делаетIntentService
), и убедитесь, что устройство бодрствует с помощьюWakeLock
(и, возможно,WifiLock
) -
Etc.
Если "this" - это запросы HTTP GET, используйте:
-
HttpUrlConnection
, или -
HttpClient
, или -
OkHttp (обертка вокруг тех, у кого есть дополнительные преимущества) или
-
Retrofit (если ваши запросы GET действительно являются вызовами веб-службы) или
-
Volley (если вам нравится, что ваш код оболочки HTTP недокументирован, неподдерживается, но Googly)
-
Любое количество других сторонних библиотек-оболочек
Если "this" является "queue", используйте класс Queue
или LinkedBlockingQueue
, если вы планируете сразу работать с несколькими потоками.
Если "this" - это что-то еще, я не могу вам помочь, поскольку устал угадывать.