炮轰 杨丰盛的《Android应用开发揭秘》看到javaeye很多人在吹嘘、推荐杨丰盛的《Android应用开发揭秘》,个人就
炮轰 杨丰盛的《Android应用开发揭秘》
看到javaeye很多人在吹嘘、推荐杨丰盛的《Android应用开发揭秘》,个人就买了一本。
首先拿到书时,再次感受到机工出版社的书的纸张独有的“薄如蝉翼、黄如粪便”的特征,不过想着javaeye一众人对书中内容的推荐,纸张的质量我忍了。
接着看书,不过我慢慢发现书中一堆晦涩不清的表述——这种表述可能是我自己的中文理解问题,算了不说了。
但书中还充斥着一堆垃圾代码,看下面书中代码(P270,免得说我诬陷):
private Runnable _discoveryWorkder = new Runnable() {public void run() {/* 开始搜索 */_bluetooth.startDiscovery();for (;;) {if (_discoveryFinished) {break;}try {Thread.sleep(100);} catch (InterruptedException e){}}}};上面_bluetooth.startDiscovery();就是开始进行蓝牙搜索了,
接下来那段死循环就纯属多余!!代码判断_discoveryFinished为true时结束死循环,但这个死循环什么都没做啊。
事实上,完全可以把这段垃圾代码删除。
我不确定杨丰盛到底会不会Android,但我觉得这java代码写得也太垃圾了。
书中大量这种的代码,让人不堪入目。前几章,看过也就算了,后来发现越来越多
上来发发牢骚。
人尚且无完人,人家写的是“书”不是宪法,你搞搞清楚!!!
cloixio您老人家晚上好好睡一觉,酝酿一下,明早早起去炮轰红楼、三国、水浒……这样来的快些. 9 楼 cczlg 2012-03-28 这本书我没看过,不能随便说好坏。但你提到的这个例子我觉得它有可取之处。且不考虑CPU和耗电量,就从实现功能上说。我在做一个功能,发现蓝牙设备之后才能进行下一步操作,典型的单线程同步思维。当初Android团队可能是考虑为了不影响UI主线程与用户交互,把startDiscovery做成一个异步方法。那么我这个需求,怎么实现呢?可能还有其它方法能实现,但我觉得杨先生这个方法简单、粗暴、有效。
另外,别有事没事就“炮轰”,人家就写本书而已,有那么大仇么。 10 楼 cczlg 2012-03-28 再补充一句,既然对技术要求这么严谨,那么,严谨的说:BroadcastRecevier不是监听蓝牙搜索结束的,而是每发现一个设备就调用一次。但是可以在这里判断action是否等于BluetoothAdapter.ACTION_DISCOVERY_FINISHED来得知搜索过程是否结束。前提还得是注册过BluetoothAdapter.ACTION_DISCOVERY_FINISHED的IntentFilter。
我猜_discoveryFinished就是通过这种方法设置为true的。
