您的位置:首页 > 移动开发 > Android开发

读Android蓝牙通信源码

2015-11-21 23:32 453 查看
我说的读android蓝牙通信源码并不是说,读google官方api,那个我也看了一下,里面全是英文倒不说,英文好的,直接无视掉。关键是代码写的我实在难以理解。当然,这也和我的阅读源码的能力有关联的。不过,幸好我在网上找到了一份开源的蓝牙通信的代码是menghnhhuan写的。大家想看他的源码可以直接戳进去就可以直接看到。

这真的是一份少见的,写的非常清晰的代码。

为什么这么说呢?

因为大家做android开发,一定写过很多项目,也见到过很多的别人写的项目。大多数,无论是自己写的,还是别人写的,我们看了往往都是直摇头。会感到愤怒,诧异,震惊。为什么会有这么烂的代码?但是,很幸运,我今天读到的这份代码,就没有上面的情况。看了之后,只感觉很清爽,很舒服。

好的,介绍就这些了,下面简单讲讲这个代码吧。

这份代码是关于android蓝牙通信的Demomenghnhhuan写的。

然后,这份代码,因为是蓝牙通信,就少不了线程通信的操作。一般我写线程通信,写这些逻辑操作都是直接在需要操作的地方搞一个子线程去操作。这也本身没有问题。而且感觉可读性很好。比如点击一个按钮去做一个网络访问。往往,我就会在点击事件里面搞一个子线程去访问网络。但是这样做也有一个坏处,就是性能很差。过不多久,特别是这种点击操作很多的时候,log就会提示在主线程执行了太多的操作,已经gc了多少内存等等。虽然这个提示不会带来什么。但是我们自己心里清楚,这就是烂代码。但是,我看到这份源码里面,不是这么干的。他的做法也很简单,就是在原本需要去搞子线程进行耗时操作的地方,定义一个变量,并不是马上去搞子线程。然后在需要这些数据显示的界面,再去根据之前定义的变量,开启相应的线程去做操作。虽然效果一样的,但是,这也就减轻的View控件的操作。这样,无论怎么频繁的操作UI,都不会频繁的执行子线程中的耗时逻辑。也就提高了程序的性能。

其实里面关于蓝牙的连接,数据收发。很多其他的代码也实现了。这个都是标准的流程,我就不多说了。我为什么会去看这个代码呢?因为我之前看到其他的蓝牙通信的源码,感觉里面很混乱,读了半天也没有明白,这个执行的流程是怎样的,到底先开哪个线程,然后执行什么操作,最后得到什么结果。UI与子线程的数据是在什么时候交互的,完全理不清楚。然后就在网上继续找源码。最后发现了这个优秀的代码。

好东西,不敢独享,就放出来给大家看看了。

我会根据这份源码,自己写一个Demo,到时候,有什么心得再带着我代码过来和大家分享。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: