Документы для разработчиков Android говорят, что обе функции read(byte[])
и write(byte[])
блокируют вызовы, поэтому их не следует вызывать напрямую из основного потока.
Я понимаю, что read()
возвращается только тогда, когда есть что-то, что нужно прочитать из сокета, но я должен порождать новый поток каждый раз, когда мне нужно записать байт в выходной поток сокета, используя write()
поскольку в документах сказано, что эта функция тоже может блокироваться, если принимающая сторона недостаточно быстро читает из сокета.
Далее, в примере с документами они просто вызвали write()
напрямую и дажепрокомментировал это, сказав, что функция должна быть вызвана непосредственно из деятельности.
Так каков правильный способ справиться с ситуацией, когда write()
блокирует, чтобы предотвратить зависание моего приложения и, в конечном итоге, выброс ANR? Спасибо!