Как уснуть нить, а затем прервать ее сон в любой случайный момент в Android

Разработка приложения реального времени, в котором я должен заставить поток перейти в спящий режим, как только я отправлю сообщение через SocketIo на сервер и дождусь ответа от сервера через SocketIo, а затем прерву спящий поток.

 for (TruckEnquiry value : list.values()) {

                String json = "any random string";
                SocketIO.mSocket.emit("server", json);
                try {
                    sleep(5000);  // Need to break this sleep from the UI thread of Android.
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

 }

// Здесь мы получаем сообщение с сервера, и в этот момент я хотел бы возобновить приватный поток Emitter.Listener onNewMessage = new Emitter.Listener() {

    @Override
    public void call(final Object... args) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                JSONObject data = (JSONObject) args[0];
                // threadArray.get(perticular_thread).resume();  // Want to implement this.
            }
        });
    }
};

У меня есть более одного потока в этом файле, и ThreadArray будет содержать все из них.

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

1 ответ

Вы не можете перевести один поток в спящий режим, потому что Thread.sleep(int) - это статический метод, который "переводит в спящий режим" все потоки в пуле потоков приложения.

Вы могли бы:

1) Получить ответ сервера в том же соединении, которое вы отправили данные JSON.

2) Прислушивайтесь к возможному ответу сервера, настроив в вашем приложении прослушиватель TCP (или UDP). Затем сервер установит соединение с вашим приложением с помощью URL-адреса "device_ip:listen_port", и приложение получит ответ.

Другие вопросы по тегам