在发布版本中,应用程序不会进入该函数。在debug中,一切都是正确的。在上面的代码中:显示了handler-1,但不显示handler-2。
void add(MeasuringDto measuringDto) async{
if(!showIsOn && measuringDto.isFilled){
count++;
if(count % rangeToPost == 0){
measurings.add(measuringDto);
}
if(measurings.length >= countToPost){
showIsOn = true;
print("handler-1");
await handler(measurings);
print("handler-2");
measurings.clear();
showIsOn = false;
}
}
}*更新
我想我找到了原因:我使用lambda函数监听流。据我所知,在调试模式下,这个lambda是在一个单独的线程中执行的,在发布模式下是在UI线程中执行的。由于流经常生成新数据,因此在发行版中,UI线程是完全加载的。但是我还是不明白如何解决这个问题,如何释放UI线程。
var subscription = characteristic.value.listen((value) {
_measuringPool.add(MeasuringDto(value));
});*更新-2
void _measuringHandler(List<MeasuringDto> measuringDtos) async {
CardioDto cardioDto = new CardioDto(measuringDtos);
try {
await writeECG(cardioDto);
} on DataPostFailedException catch (e) {
print(e);
}
}
void writeECG(CardioDto cardioDto) async {
var response = await http.post(address + "addECGMeasurements",
body: cardioDto.toJson(), headers: headers);
updateCookie(response);
var dataAnswerDto = DataAnswerDto.fromJson(response.body);
if (response.statusCode != 200 || !dataAnswerDto.success) {
print("Error while posting ECG measurements: " + dataAnswerDto.error);
throw DataPostFailedException();
}
}发布于 2019-07-03 18:57:57
请详细介绍一下您的处理程序(度量)函数。
当我调用的函数访问互联网时,我也遇到了同样的问题。由于我的AndroidManifes.xml中没有请求互联网访问,它在调试模式下工作正常,但在发布模式下抛出错误...
https://stackoverflow.com/questions/56867197
复制相似问题