1. gzyueqian
      13352868059

      Android開發要注意哪些坑?粵嵌解惑

      更新時間: 2017-08-21 15:23:52來源: 粵嵌教育瀏覽量:4851

        我們學習Android開發時,細心留意一些東西,可能會有不一樣的收獲。對于Android開發無從下手的學員們,想要更好地學習Android開發,你們知道有哪些坑需要注意嗎?粵嵌簡單介紹一下吧。

        不要排斥新技術和新工具。Android Studio 1.0之后的版本,基本已經穩定到可以支持正常的工作開發的程度了。單純就書寫效率而言,Android Studio帶來的好處大于它和Gradle的學習成本。JetBrains的IDE,用過都說好,還有就是適當的提升targetSdkVersion到新版本。

        代碼設計方面的問題。當你想設計一個新模塊,或者實現一個新ui組件的時候,應該采用哪些設計模式、應該以哪種形式給外界提供接口之類的問題,大部分都可以參考Android系統的源碼,找到實現方式。Google為安卓程序員提供了一座現成的寶庫。

        理解Android和Java內存管理方式。就好比學OC就要先理解黃金法則一樣,而java的內存管理,其實比OC要好理解多了。這可能會幫助你大大減少程序異步操作產生的空指針崩潰。也會幫助你理解為什么濫用單例模式會導致內存的臃腫。還會幫助你養成不用“+”去連接超大字符串的好習慣。

        ContentProvider是把數據庫表映射到一個獨立的uri是Google鼓勵的實現方式。從設計上講,用uri(統一資源標識符)去描述數據,肯定比sql語句要理想。從效果上講,用CursorLoader讀取數據是讓iOS程序員都羨慕不已的事情,作為android程序員,何苦不用呢。

        理解Activity任務棧。非Activity的Context對象如果直接啟動Activity會報錯,這只是一個表面現象,真正起作用的其實是Activity任務棧機制。理解Activity任務棧機制以及Activity的各種啟動方式,會幫助解決大部分頁面關系錯亂問題,以及應用互相掉起、任務欄進入應用、后臺彈窗引起的各種問題。

        ROM調用其非主流api時,可以使用反射。在適配一些第三方ROM的的時候,調用一些在開發環境中沒有,但在運行環境中有的方法時,可以使用反射。比方說,華為雙卡手機可能會提供獲取第二塊SIM卡信息的api,如果直接調用,在開發環境可能無法通過正常編譯,用反射就沒問題。這屬于不得已而用反射的一種情況。

        SQLite的鎖,是數據庫級別的鎖,也就是說同一個數據庫的寫操作無法并發執行。所以,在數據庫設計的時候,如果表太多,盡量將沒有關聯的表拆到多個數據庫文件中。

        Bitmap的內存占用問題。2.X時代Bitmap對象雖然存儲在堆內存中,但是用了一個byte數組存儲其像素信息,通過計數器來記錄該像素信息被引用的個數。只有在使用者調用recycle后,Bitmap對象才會釋放像素信息,才會在失去引用后,被垃圾回收機制銷毀。再加上DVM的heap size有嚴格的閥值,所以在使用大量圖片資源的時候,及其容易發生OOM。解決辦法一般都是,用一個哈希表存儲Bitmap對象的軟引用,作為內存緩存,并在適當時機掉用其recycle。

        Android開發需要注意的坑都是要我們不斷去發現。當然,我們在學習的過程中不僅要學會動腦,而且要持之以恒,方能大有作為。




      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 精品福利视频网 | 伊人久久大香线蕉AV网址 | 亚洲Aⅴ一区二区 | 香蕉人成年视频在线观看 | 色五月这里只有精品 | 日韩免费码中文字幕 |