花費了三天時間學習了阿里巴巴 Android 開發規范,順便通過了Apsara Clouder基礎技能認證:阿里巴巴Android開發規范,證可能用處不大,但能反向push自己:1.注重代碼規范,磨練基本功;2.保持學習的主動性,推薦搞安卓的同學學一學,
認證考試
-
阿里巴巴 Android 開發規范認證考試地址如下:https://edu.aliyun.com/certification/cldt04,官方注意事項如下:
1、考試共 (40) 道題,總分100分,及格分數80分 2、考試需在(90分鐘)內交卷,程序中無法暫停,請提前安排好時間;如未及時交卷,則本次考試作廢 3、推薦使用 Chrome 瀏覽器(版本:73及以上的正式版本),或Firefox瀏覽器(版本:66及以上的正式版本) 4、開始答題前會進行身份驗證,需要您拍攝并上傳身份證人像面照片,并按照系統要求開啟攝像頭進行面部識別 -
40道題均為選擇題:單選15道題,多選25道題,理論上只要答對32題及以上即可通過考試,
-
40道題未涉及《阿里巴巴 Java 開發手冊》,知識點均在《 Android 開發規范》一書中,但建議同時通讀Java開發手冊,
-
考試中的部分知識點概括如下,其他知識點建議自行查書:
Android 資源檔案命名與使用 1.【推薦】layout/資源檔案的命名需帶模塊前綴,eg:Activity 的 layout 以 module_activity 開頭; 2.【推薦】Id 資源原則上以駝峰法命名,View 組件的資源 id 建議以 View 的縮寫作為前綴,常用縮寫參考書籍, 3.【推薦】圖片根據其解析度,放在不同螢屏密度的 drawable 目錄下管理,否則可能在低密度設備上導致記憶體占用增加,又可能在高密度設備上導致圖片顯示不夠清晰, Android 基本組件 4.【推薦】Activity#onSaveInstanceState()方法不是 Activity 生命周期方法,也不保證一定會被呼叫,它是用來在 Activity 被意外銷毀時保存 UI 狀態的,只能用于保存臨時性資料,例如 UI 控制元件的屬性等,不能跟資料的持久化存盤混為一談,持久化存盤應該在 Activity#onPause()/onStop()中實行, 5.【強制】避免在 Service#onStartCommand()/onBind()方法中執行耗時操作(因為是在主執行緒),如果確實有需求,應改用 IntentService 或采用其他異步機制完成, 6.【強制】避免在 BroadcastReceiver#onReceive()中執行耗時操作,如果有耗時作業,應該創建 IntentService 完成,而不應該在 BroadcastReceiver 內創建子執行緒去做, 7.【推薦】 添 加 Fragment 時,確保 FragmentTransaction#commit() 在Activity#onPostResume()或者 FragmentActivity#onResumeFragments()內呼叫,不要隨意使用 FragmentTransaction#commitAllowingStateLoss()來代替,任何commitAllowingStateLoss()的使用必須經過 code review,確保無負面影響, 8.【推薦】對于只用于應用內的廣播,優先使用 LocalBroadcastManager 來進行注冊和發送,LocalBroadcastManager 安全性更好,同時擁有更高的運行效率, 9.【強制】Activity或者Fragment中動態注冊BroadCastReceiver時,registerReceiver()和 unregisterReceiver()要成對出現, UI 與布局 10.【強制】布局中不得不使用 ViewGroup 多重嵌套時,不要使用 LinearLayout 嵌套,改用 RelativeLayout,可以有效降低嵌套數,要找到那些多余的 View(增加渲染延遲的 view),可以用 Android Studio Monitor里的 Hierarchy Viewer 工具,可視化的查看所有的 view, 11.【推薦】在 Activity 中顯示對話框或彈出浮層時,盡量使用 DialogFragment,而非Dialog/AlertDialog,這樣便于隨Activity生命周期管理對話框/彈出浮層的生命周期, 12.【推薦】文本大小使用單位 dp,View 大小使用單位 dp,對于 TextView,如果在文字大小確定的情況下推薦使用 wrap_content 布局避免出現文字顯示不全的適配問題,之所以文本大小也推薦使用 dp 而非 sp,因為 sp 是 Android 早期推薦使用的,但其實 sp 不僅和 dp 一樣受螢屏密度的影響,還受到系統設定里字體大小的影響, 13.【強制】禁止在設計布局時多次為子 View 和父 View 設定同樣背景進而造成頁面過度繪制,推薦將不需要顯示的布局進行及時隱藏, 14.【推薦】在需要時刻重繪某一區域的組件時,建議通過以下方式避免引發全域 layout重繪: 1) 設定固定的 View 大小的寬高,如倒計時組件等; 2) 呼叫 View 的 layout 方法修改位置,如彈幕組件等; 3) 通過修改 Canvas 位置并且呼叫 invalidate(int l, int t, int r, int b)等方式限定重繪區域; 4) 通過設定一個是否允許requestLayout的變數,然后重寫控制元件的requestlayout、onSizeChanged 方法,判斷控制元件的大小沒有改變的情況下,當進入requestLayout 的時候,直接回傳而不呼叫 super 的 requestLayout 方法, 行程、執行緒與訊息通信 15.【強制】執行緒池不允許使用 Executors 去創建,而是通過 ThreadPoolExecutor 的方式,這樣的處理方式讓寫的同學更加明確執行緒池的運行規則,規避資源耗盡的風險,其他會堆積大量的請求或創建大量的執行緒; 16.【推薦】 禁止在多行程之間用 SharedPreferences 共享資料,雖然可以(MODE_MULTI_PROCESS),但官方已不推薦, 檔案和資料庫 17.【推薦】 SharedPreference 提交資料時,盡量使用 Editor#apply() ,而非Editor#commit(),一般來講,僅當需要確定提交結果,并據此有后續操作時,才使用 Editor#commit(), 18.【強制】多執行緒操作寫入資料庫時,需要使用事務,以免出現同步問題, 19.【強制】執行 SQL 陳述句時,應使用 SQLiteDatabase#insert()、update()、delete(),不要使用 SQLiteDatabase#execSQL(),以免 SQL 注入風險, Bitmap、Drawable 與影片 20.【強制】png 圖片使用 TinyPNG 或者類似工具壓縮處理,減少包體積, 21.【強制】在 Activity#onPause()或 Activity#onStop()回呼中,關閉當前 activity 正在執行的的影片, 22.【推薦】在影片或者其他異步任務結束時,應該考慮回呼時刻的環境是否還支持業務處理,例如 Activity 的 onStop()函式已經執行,且在該函式中主動釋放了資源,此時回呼中如果不做判斷就會空指標崩潰, 23.【推薦】使用 inBitmap 重復利用記憶體空間,避免重復開辟新記憶體, 24.【推薦】謹慎使用 gif 圖片,注意限制每個頁面允許同時播放的 gif 圖片,以及單個gif 圖片的大小, 安全 25.【強制】禁止使用常量初始化矢量引數構建 IvParameterSpec,建議 IV 通過隨機方式產生, 26.【強制】將 android:allowbackup 屬性必須設定為 false,阻止應用資料被匯出, 27.【強制】所有的 Android 基本組件(Activity、Service、BroadcastReceiver、ContentProvider 等)都不應在沒有嚴格權限控制的情況下,將 android:exported 設定為 true,
阿里云證書

總結
除了學習 《Android開發規范》一書之外,還應該:1.學習《Java開發手冊》;2.在Android Studio安裝規約檢查插件,不要忽視插件提示的問題,規范的代碼習慣能大大減少不必要的bug,打好基礎才能走得更遠,
參考鏈接
《阿里巴巴Java開發手冊v1.4.0(詳盡版)》
《阿里巴巴Android開發規范》
Android規約檢查插件
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/295689.html
標籤:其他
上一篇:Android Studio 自己app啟動另一個app 啟動別的應用 啟動自己的另一個app 啟動自己的另一個應用 啟動其他應用 解決方法
