如何解决SAP:大数据发送的中断/并行化
我正在使用 SAP:作为消费者观看,电话作为提供者。
通常他们之间的通信是完美的,但我现在有一个瓶颈:如果我从手机向手表发送大量数据(使用SASocket.secureSend
),我无法中断它。
考虑一下:
我正在从手机向手表发送一笔大交易,在中间,我想从手表向手机发送一条消息:这是有效的,因此手表的消息会到达我的手机在这另一笔巨额交易中。即:SAP 似乎处理双工通信
问题:
我的手机无法回复这条手表信息,需要先等待大额转账完成。 我尝试使用不同的通道(一个通道用于命令,一个通道用于大数据),但仍然必须先完成大数据发送,然后才能发送命令(在不同的通道上进行无关紧要)。
我可以以某种方式中断大数据发送/开始并行发送命令吗?
按照推荐的方式发送当前会产生一个线程:
new Thread(new Runnable() {
public void run() {
Log.d(LOG_TAG,"run: SEND START!");
try {
mSASocket.secureSend(getServiceChannelId(0),data.getBytes());
} catch (IOException e) {
e.printstacktrace();
}
Log.d(LOG_TAG,"run: SEND END!");
}
}).start();
我试过中断这个线程,但它并没有停止巨大的事务,所以它没有帮助。
我怎样才能中断大笔交易,或者向手表并行(具有更高优先级)发送另一条消息?
解决方法
SAP 为每个服务通道维护一个会话队列,如附件服务.xml 中所定义。
每个服务渠道可以有不同的优先级。
所以要解决这个问题,请为较小尺寸的数据使用的服务通道声明高优先级。这样即使更大的数据仍在传输,手机也可以发送其他高优先级的消息在不同的频道上观看。 请参考下面的代码片段。
<serviceProfile
.
.
<serviceChannel
dataRate="low"
id="104"
priority="low"
reliability="enable" />
// create a new service channel with high priority and different id
<serviceChannel
dataRate="low"
id="105"
priority="high"
reliability="enable" />
</serviceProfile>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。