我正在努力解决这里需要发生的事情。我目前正在开发一个运行服务的应用程序。该服务在启动时会打开一个在后台线程中运行的网络服务器。
在此服务运行的任何时候,用户都可以从浏览器向设备发送命令。目前的事件顺序如下。
- 用户向服务器发送请求
- 服务器通过 msg 处理程序构造向服务发送消息,它发送诸如 url 参数之类的数据
- 服务对数据做它想做的事,并希望在浏览器中向用户发送一些反馈消息
- ???
- 服务器对请求的响应包含来自服务的反馈消息。
我的函数设置方式我需要在等待服务响应时暂停我的 serve() 函数,然后在收到消息后恢复并发送 http 响应。
网络服务器.java
public Response serve( String uri, String method, Properties header, Properties parms, Properties files )
{
Bundle b = Utilities.convertToBundle(parms);
Message msg = new Message();
msg.setData(b);
handler.sendMessage(msg);
//sending a message to the handler in the service
return new NanoHTTPD.Response();
}
命令服务.java
public class CommandService extends Service {
private WebServer webserver;
public Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
execute_command(msg.getData());//some type of message should be sent back after this executes
};
有什么建议么?这种结构是实现它的最佳方式,还是你能想到一个更好的设计来实现更清晰的实现?