如何睡眠线程,然后在Android

时间:2017-03-30 14:35:27

标签: java android multithreading thread-sleep

开发一个实时应用程序,一旦我通过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();
                }

 }

//这里我们从服务器获取消息,此时我想恢复该线程     private 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 个答案:

答案 0 :(得分:0)

你不能让一个线程进入休眠状态,因为Thread.sleep(int)是一个静态方法,可以“释放”应用程序线程池中的所有线程。

你可以:

1)在您发送JSON数据的同一连接中获取服务器响应。

2)通过在应用中设置TCP(或UDP)侦听器来侦听服务器最终响应。然后,服务器将使用URL“device_ip:listening_port”建立与应用程序的连接,应用程序将检索响应。