在发行版中,应用程序不输入功能。在调试中,所有操作均正确完成。在上面的代码中:显示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));
});
* update-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();
}
}
答案 0 :(得分:0)
请进一步介绍您的处理程序(测量)功能。
当我的调用函数访问互联网时,我遇到了同样的问题。 由于我没有在AndroidManifes.xml中请求互联网访问,因此它在调试模式下工作正常,但是在发布模式下抛出了错误...