時間:2018-08-10 00:00:00 來源:信盈達 作者:信盈達
1. 監聽者模式不方便使用時,推薦 EventBus 框架庫,使用時間總線,沒接觸過的同學可以自行腦補一下哦。
2. Handler 在子線程線程使用 Looper.prepare,或者 new 的時候給構造函數傳入 MainLooper 來確保在主線程 run。
3. timepicker 點擊確定后需要 clearFocus 才能獲取手動輸入的時間。
4. 構造函數里面極度不推薦啟動異步線程,會埋下隱患。比如:異步線程調用了本例的示例,就會悲劇等著崩潰吧。
5. 千萬不要理所當然的以為一個對象不會為空,充分的做好容錯處理;另外注意 null 也可以插入 ArrayList 等容器中。
6. ExpandableListView 的子列表不能點擊(禁用)要把 Adapter 的 isChildSelectable 方法返回 true。
7. UI 顯示注意內容過長的情形要提前使用 ScrollView 否則在小手機上尷尬你懂得。
8. 注意按鈕的感應范圍不小于 9mm 否則不易點擊;輸入框注意光標的位置更易用戶輸入。
9. 服務器和客戶端盡量統一唯一標識(有可能是 ID),否則多少會有歧義和問題。
10. 注釋,盡量去寫足夠的注釋,去描述一下思路,達到看了可以明白某一塊代碼的效果。
11. 完整型數據一定要用 Sqlite 的 Transaction,大數據一定要用。粗略測試插入 100 個數據有 20 倍的提速,插入 1000 個數據就有 100 多倍的提速。
12. 避免 String=”null”的情況出現 String = null,=””都可以。避免出現 title=”無主題”這樣的數據提交到數據庫浪費空間。
13. 存在多個不同的 dbhelper 實例情況下,sqlitedatabase 對象必然存在不同的實例,多線程同時寫入數據,輪流寫入數據時會不定時的報 db is locked,引起崩潰,不管是操作同張表還是異表。讀和寫可以同時并發,輪流無規律的交替執行。同時寫入數據時解決方案是用并發的每個線程都用事 務,db 則不會 lock,按次整體寫入。
14. 建議整個應用維護一個 dbhelper 實例,只要 db 沒有關閉,全局就只有一個 db 實例,多線程并發寫入 db 不會 lock,嚴格交替進行寫入:123123123。。。(123 代表不同線程,輪流插入一個記錄),讀和寫均不會鎖住 db,讀寫交替并沒有規律,執行次數和程度看 cpu 分配給哪個線程的時間片長。
15. 一個任務使用事務嵌套N個事務,N個事務中有一個失敗,這個任務整體失敗,全部成功后,數據才寫入,具有安全性,整體性。并且事務寫入大批量數據的效率經 實際測試成百上千倍的高于一般的單個寫入。數據庫大量數據、多線程操作建議使用 LiteOrm 數據庫框架,更穩定簡單。
16. 經常需要用 ListView 或者其它顯示大量 Items 的控件實時跟蹤或者查看信息,并且希望最新的條目可以自動滾動到可視范圍內。通過設置的控件 transcriptMode 屬性可以將 Android 平臺的控件(支持 ScrollBar)自動滑動到最底部。
17. Long a; 判斷a有沒有賦值,if (a == 0) 在a沒有賦值情況下會報錯。應該 if (a == null),Integer、Floag 等也一樣,原因你懂,只是提醒你要小心喔。
18. 編碼遇到讀寫、出入等邏輯要雙向考慮,文件導入導出,字符字節相互轉換都要兩邊轉碼。
19. 一個 int 值與一個 Integer 對象(能包含 int 值的最小對象)的大小比率約為 1:4(32 位和 64 位機器有不同)。額外的開銷源于 JVM 用于描述 Java 對象的元數據也就是 Integer,(Long、Double 等也是)。
20. 對象由元數據和數據組成。元數據包括類(指向類的指針,描述了類的類型),標記(描述了對象狀態,如散列碼、形狀等),鎖(對象同步信息)。數組對象還包括大小的元數據。
信盈達2008年在深圳特區南山高新科技園成立。自成立至今近九年來專注為企業和個人提供高端方案設計、高端嵌入式/Android培訓等服務。公司下設信盈達實訓學院、信盈達研發中心、信盈達教學儀器三大業務板塊。九年來公司堅持"技術領先、服務領先",以雄厚的實力和專業的品質成為國內唯一有實力從產品最底層研發到系統層開發的嵌入式實訓、產品解決方案提供商。為中國IT行業提供最具價值的職業教育服務。專業培訓i嵌入式、物聯網、人工智能、Java、單片機等課程,想了解更多信息點擊立馬咨詢
免費領取試聽卡
申請已經提交
老師會馬上給您安排試聽課程!
申請出錯了
您可以加老師QQ:914865590報名咨詢!