Pull to refresh

Comments 5

Мне кажется, что вы некорректно используете AsyncTask. Во-первых в onPostExecute(Void result) у вас Thread.sleep(5000), что сразу же приведет к ANR (application not responding), потому что вы блокируете main thread. Во вторых, вы создаете в AsyncTask новый thread.
Возможно, было бы лучше создать 2 отдельных потока ReadingThread и WritingThread и посылать из них сообщения в Service. Либо делать и запись и чтение в AsyncTask, но последовательно. В этом случае, можно делать broadcast прямо в onPostExecute(). Ну и использовать static variable для передачи команды это не правильно. (config.SOCKET_MESSAGE = ServerCommands.login(«name», «pass»)). Ее следовало бы передать в качастве параметра AsyncTask или прикрепить к сообщению WritingThread.
С вами согласен насчет неидеального сокет-клиента, но статья лишь отображение работы передачи данных из сервиса в UI. Сокет-клиент подходящий пример того, для чего может потребоваться такая «связка».
Передача в GUI сделана хорошо. Большую часть имплементации сокет-клиента можно в данном контексте опустить. Просто хотел обратить ваше внимание на использование AsyncTask.
Спасибо за конструктивную критику, мне есть чему поучиться!
На мой взгляд для таких целей придумали LocalBroadcastManager, который работает только для вашего приложения и нет необходимости обновлять себя через систему.
Sign up to leave a comment.

Articles