VNanoMsg
介绍
关于VNanoMsg是Android下的Socket的通讯开源库,是NanoMsg的做的一次封装,详细介绍可以看公众号VNanoMsg的相关页面。
NanoMsg地址
微卡智享
https://github.com/Vaccae/VNanoMsg.git
# | 更新说明 |
---|---|
1 | 把Nanomsg中原来改的SurVey的参数改了回来,用于解决通讯时接收不全的问题 |
2 | SurVey例子中原来接收后开启的线程,改为了kotlin的协程方式,对协程的一个简单的学习 |
01
SurVey.h的修改
修改了nanomsg源码中原来我们为了适应NNanoMsg的旧版本改动的地方,因为这次把NNanoMsg源码下来后自己同步到这里了,所以就不再动nanomsg的源码了
02
Survey例子的kotlin协程小试验
依赖项加入
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.2.0'
SurVeyActivity中修改
//协程的使用
private suspend fun RecvSurVeyasync() {
var recvcount = 0;
//设置在什么线程中开启
withContext(Dispatchers.IO) {
while (true) {
delay(1000)
nnsurvey?.let {
try {
it.recvbyte()?.also { data ->
val recvmsg = data.toString(charset = Charsets.UTF_8)
//主线程同步
MainScope().launch {
tvmsg.append(recvmsg + "\r\n")
}
}
} catch (e: IllegalArgumentException) {
recvcount++;
//主线程同步
MainScope().launch {
tvmsg.text = recvcount.toString()
}
}
}
}
}
}
调用方法
lifecycleScope.launch {
RecvSurVeyasync()
}
使用LifecycleScope的主要原因是,一是学习Android的新的框架,二是这个和Activity生命周期有关,原来我们用Thread线程的时候,当这个Activity关闭后,后台还是一直在进行网络通讯,而改为lifecycleScope后,当Activity关闭后,后台的线程也跟着停止了。
完