1. gzyueqian
      13352868059

      Android開發(fā)要注意哪些坑?粵嵌解惑

      更新時(shí)間: 2017-08-21 15:23:52來源: 粵嵌教育瀏覽量:4973

        我們學(xué)習(xí)Android開發(fā)時(shí),細(xì)心留意一些東西,可能會(huì)有不一樣的收獲。對(duì)于Android開發(fā)無從下手的學(xué)員們,想要更好地學(xué)習(xí)Android開發(fā),你們知道有哪些坑需要注意嗎?粵嵌簡(jiǎn)單介紹一下吧。

        不要排斥新技術(shù)和新工具。Android Studio 1.0之后的版本,基本已經(jīng)穩(wěn)定到可以支持正常的工作開發(fā)的程度了。單純就書寫效率而言,Android Studio帶來的好處大于它和Gradle的學(xué)習(xí)成本。JetBrains的IDE,用過都說好,還有就是適當(dāng)?shù)奶嵘齮argetSdkVersion到新版本。

        代碼設(shè)計(jì)方面的問題。當(dāng)你想設(shè)計(jì)一個(gè)新模塊,或者實(shí)現(xiàn)一個(gè)新ui組件的時(shí)候,應(yīng)該采用哪些設(shè)計(jì)模式、應(yīng)該以哪種形式給外界提供接口之類的問題,大部分都可以參考Android系統(tǒng)的源碼,找到實(shí)現(xiàn)方式。Google為安卓程序員提供了一座現(xiàn)成的寶庫(kù)。

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

        ContentProvider是把數(shù)據(jù)庫(kù)表映射到一個(gè)獨(dú)立的uri是Google鼓勵(lì)的實(shí)現(xiàn)方式。從設(shè)計(jì)上講,用uri(統(tǒng)一資源標(biāo)識(shí)符)去描述數(shù)據(jù),肯定比sql語(yǔ)句要理想。從效果上講,用CursorLoader讀取數(shù)據(jù)是讓iOS程序員都羨慕不已的事情,作為android程序員,何苦不用呢。

        理解Activity任務(wù)棧。非Activity的Context對(duì)象如果直接啟動(dòng)Activity會(huì)報(bào)錯(cuò),這只是一個(gè)表面現(xiàn)象,真正起作用的其實(shí)是Activity任務(wù)棧機(jī)制。理解Activity任務(wù)棧機(jī)制以及Activity的各種啟動(dòng)方式,會(huì)幫助解決大部分頁(yè)面關(guān)系錯(cuò)亂問題,以及應(yīng)用互相掉起、任務(wù)欄進(jìn)入應(yīng)用、后臺(tái)彈窗引起的各種問題。

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

        SQLite的鎖,是數(shù)據(jù)庫(kù)級(jí)別的鎖,也就是說同一個(gè)數(shù)據(jù)庫(kù)的寫操作無法并發(fā)執(zhí)行。所以,在數(shù)據(jù)庫(kù)設(shè)計(jì)的時(shí)候,如果表太多,盡量將沒有關(guān)聯(lián)的表拆到多個(gè)數(shù)據(jù)庫(kù)文件中。

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

        Android開發(fā)需要注意的坑都是要我們不斷去發(fā)現(xiàn)。當(dāng)然,我們?cè)趯W(xué)習(xí)的過程中不僅要學(xué)會(huì)動(dòng)腦,而且要持之以恒,方能大有作為。




      免費(fèi)預(yù)約試聽課

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

      
      

      1. 中文字幕精品亚洲无线码一区 | 亚洲精品中文字幕乱码 | 亚洲欧美另类在线区 | 亚洲资源站中文在线 | 精品免费AV一区二区三区 | 亚洲精品另类国产 |