按住按钮时,我们正在使用 l2cap 通道发送数据包,而我们释放按钮时,我们要发送的最后一个数据包正在以 4 秒的延迟时间间隔发送。我们如何避免延迟并使用 l2cap 通道立即发送数据包?
经过观察,我们发现延迟是由于在循环按下按钮时发送的先前数据包正在执行。如何避免这种延迟并在按钮释放时立即发送最后一个数据包?
代码片段:
//on release button
- (void)onRelease
{
dispatch_async(dispatch_get_main_queue(), ^{
[self sendStreamData:(NSString*)@"A"];
});
}
//Send data packet
(void)sendStreamData: (NSString*)onpress {
NSString *timervalue = [[[timer userInfo] objectForKey:@"param1"] integerValue];
const char *c = [[[timer userInfo] objectForKey:@"param1"] UTF8String];
check
if (![self->outputStream hasSpaceAvailable]){
NSLog(@"No space available, skip");
return;
}
const char *c = [onpress UTF8String];
NSData* data = [NSData dataWithBytes:c length:onpress.length];
NSInteger res = [self->outputStream write:[data bytes] maxLength:[data length]];
NSLog(@"OutputStream response is %@", self->outputStream);
if (res == onpress.length){
// track
[self trackData:(int)[data length]];
NSString *outputData = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding];
NSLog(@"Sent OutputStream is %@", outputData);
}
}