Re: [問題] 初學者適用書籍?(非java)

看板AndroidDev作者 (null)時間13年前 (2011/06/30 00:24), 編輯推噓4(4012)
留言16則, 4人參與, 最新討論串2/3 (看更多)
※ 引述《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

06/30 01:08, , 1F
感謝,當初我們考慮的就是效能,但這篇文章讓我頓開茅塞...^^
06/30 01:08, 1F

06/30 01:09, , 2F
感謝各位先進的回應,另外,請問我可以引用轉貼這篇文章嘛?(會註
06/30 01:09, 2F

06/30 01:09, , 3F
明作者與來源)
06/30 01:09, 3F

06/30 01:12, , 4F
可以啊,都寫出來了。沒在怕被轉的QQ
06/30 01:12, 4F

06/30 01:16, , 5F
呵呵,想說詢問是禮貌...還是要再說聲多謝,真的XD
06/30 01:16, 5F

06/30 14:13, , 6F
但是bitmap size的問題真是打痛不少人= ="~
06/30 14:13, 6F

06/30 14:13, , 7F
每次都因為bitmap size而OOM就覺得很怒Orz
06/30 14:13, 7F

06/30 14:14, , 8F
放也放不掉~GOOGLE也查不出什麼解法....
06/30 14:14, 8F

06/30 14:15, , 9F
bitmap得看使用情況個別處理了。像我在寫player為了效能跟
06/30 14:15, 9F

06/30 14:16, , 10F
減少GC發生的機會,畫面就只有一個bitmap。一直重覆畫上去。
06/30 14:16, 10F

06/30 14:17, , 11F
如果是多個不同大小的bitmap,要重複使用就得想辦法對canvas
06/30 14:17, 11F

06/30 14:17, , 12F
下手了。因為bitmap可以重複畫在canvas上。用幾個重複的
06/30 14:17, 12F

06/30 14:18, , 13F
bitmap去畫所有的圖。那可能是避免bitmap OOM的方法之一。
06/30 14:18, 13F

06/30 14:18, , 14F
如果,萬不得已就是需要那麼多bitmap。那就實作pool機制
06/30 14:18, 14F

06/30 14:19, , 15F
不要真的讓bitmap去recycle,自己管理它的生命週期。
06/30 14:19, 15F

07/02 01:07, , 16F
其實是因為bitmap oom的關係的話 可以考慮GLES的封裝
07/02 01:07, 16F
文章代碼(AID): #1E2r6qpf (AndroidDev)
文章代碼(AID): #1E2r6qpf (AndroidDev)