【发布时间】:2015-07-23 21:45:17
【问题描述】:
我的 PHP 服务器脚本通过 RS232 连接到硬件,因此只有一个请求会给出有效的反馈。如何确保一次只发送一个请求,例如队列?
一个 Timer 调用了这两个函数,所以我在服务器站点上看到了 2 个同时请求。
private void deviceGetActualVolume() {
if (isOnline()) {
RestAdapter adapter = new RestAdapter.Builder()
//.setLogLevel(RestAdapter.LogLevel.FULL)
.setEndpoint(deviceIp)
.build();
deviceAPI api = adapter.create(deviceAPI.class);
api.GetActualVolume(new Callback<deviceResponse>() {
@Override
public void success(deviceResponse device_response, Response response) {
if (!device_response.isOk()) {
Toast.makeText(MainActivity.this, "Command Error", Toast.LENGTH_LONG).show();
} else {
UpdateActualValue(0, device_response.getActualvolume());
}
}
@Override
public void failure(RetrofitError retrofitError) { Toast.makeText(MainActivity.this, "deviceGetActualVolume Failure", Toast.LENGTH_LONG).show(); }
});
} else { Toast.makeText(MainActivity.this, getString(R.string.notconnected), Toast.LENGTH_LONG).show(); }
}
private void deviceGetScale() {
if (isOnline()) {
RestAdapter adapter = new RestAdapter.Builder()
//.setLogLevel(RestAdapter.LogLevel.FULL)
.setEndpoint(deviceIp)
.build();
deviceAPI api = adapter.create(deviceAPI.class);
api.GetScaleValue(new Callback<deviceResponse>() {
@Override
public void success(deviceResponse device_response, Response response) {
if (!device_response.isOk()) {
Toast.makeText(MainActivity.this, "Command Error", Toast.LENGTH_LONG).show();
} else {
UpdateScaleValue(device_response.getScale());
}
}
@Override
public void failure(RetrofitError retrofitError) {
Toast.makeText(MainActivity.this, "deviceGetScale Failure", Toast.LENGTH_LONG).show();
}
});
} else { Toast.makeText(MainActivity.this, getString(R.string.notconnected), Toast.LENGTH_LONG).show(); }
}
【问题讨论】: