我实际上是在Java程序中使用套接字侦听器。 这个想法是让我的程序运行到捕获外部事件为止。一旦发现,我就必须更新布局。
为了让我的应用程序在特定端口上侦听时运行,我做了如下操作:
// new thread allows me to let my program continue
new Thread() {
public void run() {
try {
while (true) {
try (ServerSocket listener = new ServerSocket(59090)) {
System.out.println("The server is running...");
// listening
while (true) {
try (Socket socket = listener.accept()) {
// catches event
System.out.println("event caught");
InputStream raw = socket.getInputStream();
headerData = getHeaders(raw);
// some code
// ...
// ...
// Update UI
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
这个想法是,我会不断监听59090端口,并在使用该端口后立即执行我的特定代码。
现在的问题是当我赶上一个事件时。 如果我不在“主”线程中,似乎无法在UI上执行操作。我对吗 ? 是否可以向我的“主线程”发送信息以告诉它更新UI?否则可以将我的主线程“切换”到该线程吗?
编辑:
我已经看到在Android中可以使用AsyncTask,并且onPostExecute()方法允许将信息发送到UI线程。
onPostExecute(Result),在后台计算完成后在UI线程上调用。后台计算的结果作为参数传递到此步骤。
Java是否有等效功能?
谢谢