溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

集合:安卓開發(fā)中怎么注意細(xì)節(jié)?一文告訴你四十個

發(fā)布時間:2020-08-08 04:07:21 來源:ITPUB博客 閱讀:157 作者:yilian 欄目:移動開發(fā)
集合:安卓開發(fā)中怎么注意細(xì)節(jié)?一文告訴你四十個
image

1.全部Activity可繼承自BaseActivity,便于統(tǒng)一風(fēng)格與處理公共事件,構(gòu)建對話框統(tǒng)一構(gòu)建器的建立,萬一需要整體變動,一處修改到處有效。

2.數(shù)據(jù)庫表段字段常量和SQL邏輯分離,更清晰,建議使用Lite系列框架LiteOrm庫,超級清晰且重心可以放在業(yè)務(wù)上不用關(guān)心數(shù)據(jù)庫細(xì)節(jié)。

3.全局變量放全局類中,模塊私有放自己的管理類中,讓常量清晰且集中.

4.不要相信龐大的管理類的東西會帶來什么好處,可能是一場災(zāi)難,而要時刻注意單一職責(zé)原則,一個類專心做好一件事情更為清晰。

5.如果數(shù)據(jù)沒有必要加載,數(shù)據(jù)請務(wù)必延遲初始化,謹(jǐn)記為用戶節(jié)省內(nèi)存,總不會有壞處。

6.異常拋出,在合適的位置處理或者集中處理,不要搞的到處是catch,混亂且性能低,盡量不要在循環(huán)體中捕獲異常,以提升性能。

7.地址引用鏈長時(3個以上指向)小心內(nèi)存泄漏,和警惕堆棧地址指向,典型的易發(fā)事件是:數(shù)據(jù)更新了,ListView視圖卻沒有刷新,這時Adapter很可能指向并的并不是你更新的數(shù)據(jù)容器地址(一般為List)。

8.信息同步:不管是數(shù)據(jù)庫還是網(wǎng)網(wǎng)絡(luò)操作,新插入的數(shù)據(jù)注意返回ID(如果沒有賦予唯一ID),否則相當(dāng)于沒有同步。

9.多線程操作數(shù)據(jù)庫時,db關(guān)閉了會報錯,也很可能出現(xiàn)互鎖的問題,推薦使用事務(wù),推薦使用自動化的LiteOrm庫操作。

10.做之前先考慮那些可以公用,資源,layout,類,做一個結(jié)構(gòu)、架構(gòu)分析以加快開發(fā),提升代碼可復(fù)用度。

集合:安卓開發(fā)中怎么注意細(xì)節(jié)?一文告訴你四十個
image
  • 有序隊列操作add、delete操作時注意保持排序,否則你會比較難堪喔。

  • 數(shù)據(jù)庫刪除數(shù)據(jù)時,要注意級聯(lián)操作避免出現(xiàn)永遠刪不掉的臟數(shù)據(jù)喔。

  • 關(guān)于形參實參:調(diào)用函數(shù)時參數(shù)為基本類型傳的是值,即傳值;參數(shù)為對象傳遞的是引用,即傳址。

  • listview在數(shù)據(jù)未滿一屏?xí)r,setSelection函數(shù)不起作用;ListView批量操作時各子項和視圖正確對應(yīng),可見即所選。

  • 控制Activity的代碼量,保持主要邏輯清晰。其他類遵守SRP(單一職能),ISP(接口隔離)原則。

  • arraylist執(zhí)行remove時注意移除int和Integer的區(qū)別。你懂得。

  • Log請打上Tag,調(diào)試打印一定要做標(biāo)記,能定位打印位置,否則尷尬是:不知道是哪里在打印。

  • 碼塊/常量/資源可以集中公用的一定共用,即使共用邏輯稍復(fù)雜一點也會值得,修改起來很輕松,修改一種,到處有效。

  • setSelection不起作用,嘗試smoothScrollToPosition。ListView的LastVisiblePosition(最后一個可見子項)會隨著getView方法執(zhí)行位置不同變動而變。

集合:安卓開發(fā)中怎么注意細(xì)節(jié)?一文告訴你四十個
image

20.與Activity通訊使用Handler更方便; 如果你的框架回調(diào)鏈變長,考慮監(jiān)聽者模式簡化回調(diào)。

21.監(jiān)聽者模式不方便使用時,推薦EventBus框架庫,使用時間總線,沒接觸過的同學(xué)可以自行腦補一下哦。

22.Handler在子線程線程使用Looper.prepare,或者new的時候給構(gòu)造函數(shù)傳入MainLooper來確保在主線程run。

23.timepicker 點擊確定后需要clearFocus才能獲取手動輸入的時間。

24.構(gòu)造函數(shù)里面極度不推薦啟動異步線程,會埋下隱患。比如:異步線程調(diào)用了本例的示例,就會悲劇等著崩潰吧。

25.千萬不要理所當(dāng)然的以為一個對象不會為空,充分的做好容錯處理;另外注意null也可以插入ArrayList等容器中。

26.ExpandableListView的子列表不能點擊(禁用)要把Adapter的isChildSelectable方法返回true。

27.UI顯示注意內(nèi)容過長的情形要提前使用ScrollView否則在小手機上尷尬你懂得。

28.注意按鈕的感應(yīng)范圍不小于9mm否則不易點擊;輸入框注意光標(biāo)的位置更易用戶輸入。

29.服務(wù)器和客戶端盡量統(tǒng)一唯一標(biāo)識(有可能是ID),否則多少會有歧義和問題。

30.注釋,盡量去寫足夠的注釋,去描述一下思路,達到看了可以明白某一塊代碼的效果。

集合:安卓開發(fā)中怎么注意細(xì)節(jié)?一文告訴你四十個
image
  • 完整型數(shù)據(jù)一定要用Sqlite的Transaction,大數(shù)據(jù)一定要用。粗略測試插入100個數(shù)據(jù)有20倍的提速,插入1000個數(shù)據(jù)就有100多倍的提速。

  • 避免String=”null”的情況出現(xiàn)String = null,=””都可以。避免出現(xiàn)title=”無主題”這樣的數(shù)據(jù)提交到數(shù)據(jù)庫浪費空間。

  • 存在多個不同的dbhelper實例情況下,sqlitedatabase對象必然存在不同的實例,多線程同時寫入數(shù)據(jù),輪流寫入數(shù)據(jù)時會不定時的報db is locked,引起崩潰,不管是操作同張表還是異表。讀和寫可以同時并發(fā),輪流無規(guī)律的交替執(zhí)行。同時寫入數(shù)據(jù)時解決方案是用并發(fā)的每個線程都用事務(wù),db則不會lock,按次整體寫入。

  • 建議整個應(yīng)用維護一個dbhelper實例,只要db沒有關(guān)閉,全局就只有一個db實例,多線程并發(fā)寫入db不會lock,嚴(yán)格交替進行寫入:123123123。。。(123代表不同線程,輪流插入一個記錄),讀和寫均不會鎖住db,讀寫交替并沒有規(guī)律,執(zhí)行次數(shù)和程度看cpu分配給哪個線程的時間片長。

  • 一個任務(wù)使用事務(wù)嵌套N個事務(wù),N個事務(wù)中有一個失敗,這個任務(wù)整體失敗,全部成功后,數(shù)據(jù)才寫入,具有安全性,整體性。并且事務(wù)寫入大批量數(shù)據(jù)的效率經(jīng)實際測試成百上千倍的高于一般的單個寫入。數(shù)據(jù)庫大量數(shù)據(jù)、多線程操作建議使用LiteOrm數(shù)據(jù)庫框架,更穩(wěn)定簡單。

  • 經(jīng)常需要用ListView或者其它顯示大量Items的控件實時跟蹤或者查看信息,并且希望最新的條目可以自動滾動到可視范圍內(nèi)。通過設(shè)置的控件transcriptMode屬性可以將Android平臺的控件(支持ScrollBar)自動滑動到最底部。

  • Long a; 判斷a有沒有賦值,if(a == 0)在a沒有賦值情況下會報錯。應(yīng)該if(a == null),Integer、Floag等也一樣,原因你懂,只是提醒你要小心喔。

  • 編碼遇到讀寫、出入等邏輯要雙向考慮,文件導(dǎo)入導(dǎo)出,字符字節(jié)相互轉(zhuǎn)換都要兩邊轉(zhuǎn)碼。

  • 一個 int 值與一個 Integer 對象(能包含 int 值的最小對象)的大小比率約為 1:4(32位和64位機器有不同)。額外的開銷源于 JVM 用于描述 Java 對象的元數(shù)據(jù)也就是 Integer,(Long、Double等也是)。

集合:安卓開發(fā)中怎么注意細(xì)節(jié)?一文告訴你四十個
image

Android 發(fā)展至今,競爭日趨激烈,沖擊更高的職位,才有更高的收入!而我們Android程序員,要學(xué)的東西有很多,要想不被環(huán)境淘汰就只有不斷提升自己,從來都是我們?nèi)ミm應(yīng)環(huán)境,而不是環(huán)境來適應(yīng)我們!

附上我的Android核心技術(shù)學(xué)習(xí)大綱,獲取相關(guān)內(nèi)容來我的GitHub一起玩耍: https://github.com/Meng997998/AndroidJX
vx:xx13414521

集合:安卓開發(fā)中怎么注意細(xì)節(jié)?一文告訴你四十個
image

還有Android的精選學(xué)習(xí)進階視頻,三星架構(gòu)師、阿里p7、聯(lián)通架構(gòu)師等大牛講解進階內(nèi)容,簡信我【學(xué)習(xí)視頻 】領(lǐng)取

集合:安卓開發(fā)中怎么注意細(xì)節(jié)?一文告訴你四十個
image
集合:安卓開發(fā)中怎么注意細(xì)節(jié)?一文告訴你四十個
image
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI