作者qrtt1 (null)
看板AndroidDev
标题Re: [问题] 初学者适用书籍?(非java)
时间Thu Jun 30 00:24:17 2011
※ 引述《Fnd (红尘自有千千愁)》之铭言:
: 抱歉想请问一下初学者想以c/c++来开发android app的话,
: 有那些书籍是比较适合阅读与购买的?
: 目前我找到的都是以java来写...>"<
: 还请各位不吝赐教,感谢
大致还是以 Java 为主体来开发比较好。
即使较新的版本有 Native Activity 的支援,
能我们有机会使用 C/C++ 开发 Android APP。
但是这麽做有什麽好处呢?
『效能』?如果你现在才入门,
CPU 大多进入 1GHz 以上的时代了。
你是要写 Media Player 还是 fps game (or 3D game)!?
多数的情况下,效能的调较都会被 Network IO 抵消
若者你不需要 Networking !?
采用 C/C++ 就意味着记忆体得自己管理。
在纯 Native code 的情况,在未谨慎开发的情况下
memory leak 反而会成为痛脚的问题。
用 Java 写,虽然 GC 会停住你的程式,
但它时间还没长到能让使用者感到不悦。
也有方便的 debugger 能用。
使用 gdb 得在 Android 2.x? 之後,
最好有 root 的情况下比较方便追踪问题。
如果不幸拿到 stripped library 反组译回去看,
若是 C 还稍为看得懂,
CPP 连 template 都展开了,实在是一头雾水。
纯 C/C++ 写并不代表着正真的效能,
效能是依附着 profiling tool 数据来看的。
重点在那些可被明显指出的瓶颈改善了多少。
用 C/C++ 写可能少了些 function call,
但这通常进步空间有限,
对 Native code 产生的效能要求应该是获得特殊指令集的加持。
也许,您得说说您那麽执着於采用 C/C++ 开发的理由。
这样大家才有办法进一步提出对策。
不然再问下去也只是 Android App 是以 Java 开发为主的。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.161.122.51
1F:推 Fnd:感谢,当初我们考虑的就是效能,但这篇文章让我顿开茅塞...^^ 06/30 01:08
2F:→ Fnd:感谢各位先进的回应,另外,请问我可以引用转贴这篇文章嘛?(会注 06/30 01:09
3F:→ Fnd:明作者与来源) 06/30 01:09
4F:→ qrtt1:可以啊,都写出来了。没在怕被转的QQ 06/30 01:12
5F:推 Fnd:呵呵,想说询问是礼貌...还是要再说声多谢,真的XD 06/30 01:16
6F:推 ficecmiraror:但是bitmap size的问题真是打痛不少人= ="~ 06/30 14:13
7F:→ ficecmiraror:每次都因为bitmap size而OOM就觉得很怒Orz 06/30 14:13
8F:→ ficecmiraror:放也放不掉~GOOGLE也查不出什麽解法.... 06/30 14:14
9F:→ qrtt1:bitmap得看使用情况个别处理了。像我在写player为了效能跟 06/30 14:15
10F:→ qrtt1:减少GC发生的机会,画面就只有一个bitmap。一直重覆画上去。 06/30 14:16
11F:→ qrtt1:如果是多个不同大小的bitmap,要重复使用就得想办法对canvas 06/30 14:17
12F:→ qrtt1:下手了。因为bitmap可以重复画在canvas上。用几个重复的 06/30 14:17
13F:→ qrtt1:bitmap去画所有的图。那可能是避免bitmap OOM的方法之一。 06/30 14:18
14F:→ qrtt1:如果,万不得已就是需要那麽多bitmap。那就实作pool机制 06/30 14:18
15F:→ qrtt1:不要真的让bitmap去recycle,自己管理它的生命周期。 06/30 14:19
16F:推 fasthall:其实是因为bitmap oom的关系的话 可以考虑GLES的封装 07/02 01:07