使用Android Support Annotations優化你的程式碼
如果你還沒有聽說過Android Support Annotations 函式庫,你將錯過一個整潔的新軟體包,它有助於你捕獲程式中的bugs。該函式庫包含了許多的Java註解,用於幫助Android Studio檢測程式碼中可能存在的錯誤,並報告給開發者。註解型別有很多種,本文將只介紹其中幾種,請一定要自己閱讀文件以瞭解本文未介紹的其他註解型別。
@NONNULL / @NULLABLE
@NonNull和@Nullable可能是support annotations最基礎的也是最有用的註解之一了。使用這兩個註解修飾的函式引數或者函式,表示引數或者函式返回值是否可以為空,之後 Android Studio在程式碼可能出現不安全的情況下會給出智慧提示。
使用註解前後對比如下:
未使用註解:
使用@NonNull註解:
更進一步,我們可以使用@CheckResult註解來讓使用者知道該函式的返回值是需要使用的,沒有使用函式的返回值則Android Studio會給出警告提示:
@STRINGRES / @DRAWABLERES等
你是否遇到過嘗試呼叫TextView的setText函式,結果出現如下異常:
android.content.res.Resources$NotFoundException: String resource ID #0x3039
當你給setText函式傳入一個整型值,TextView將它作為一個String資源id對待,並會進行查詢以便設定這個字串。如果存在一個可以標識整型值是非法ids的註解就好了,@StringRes正是用來實現這個功能的!
public void setText(@StringRes int id) { // Do something like getString(id), etc. }
現在如果你試圖傳遞一個非字串的資源id給這個函式,你將得到如下提示:
所有的資源型別都存在類似的註解,例如@DrawableRes, @ColorRes, @InterpolatorRes等等。
@KEEP
最近我發現一個新的support annotation註解@Keep。根據support annotations文件說明,這個註解還沒有被關聯到Gradle外掛中,被這個註解修飾的函式或者類,在程式碼混淆進行壓縮時會被保持住。
如果你曾經在使用Proguard時使用過
-keep class com.foo.bar { public static <methods> }
你會知道當嘗試把某個特定的函式或者類從優化操作中排除掉是多麼痛苦的事情。使用這個註解將會告訴Proguard不要對指定的函式或者類進行優化操作:
public class Example { @Keep public void doSomething() { // hopefully this method does something } ... }
好訊息是,如果你已經使用了appcompat-v7,那麼support-annotations已經被包含在裡面了,可以立刻開始使用它了。
相關文章
- Android Note - 程式碼優化Android優化
- 優化你的程式碼結構 --- MVP優化MVP
- 使用Web Worker優化程式碼Web優化
- Android Annotation-讓你的程式碼和設計更加優雅(一)Android
- [Android]你不知道的Android程式化–程式資訊Android
- 使用 IoC 容器進行程式碼優化行程優化
- 程式碼優化優化
- 優化程式碼中大量的if/else,你有什麼方案?優化
- Android——ConstraintLayout的使用,優化佈局效能AndroidAI優化
- 細說 Android Annotations 註解框架Android框架
- Android原始碼分析–ArrayMap優化Android原始碼優化
- 使用Async,讓你的Node.js程式碼更優雅Node.js
- 你見過哪些優雅的 Java 程式碼最佳化技巧?Java
- Effective Java -- 使用try-with-resources優化程式碼Java優化
- javaScript程式碼優化JavaScript優化
- 優化If else(簡化程式碼)優化
- 優化程式碼中的“壞味道”優化
- Python 程式碼的效能優化之道Python優化
- [Android]你不知道的Android程式化(6)--程式通訊Andromeda框架Android框架
- [Android]你不知道的Android程式化(5)--程式通訊Messenger框架AndroidMessenger框架
- [Android]你不知道的Android程式化(4)--程式通訊AIDL框架AndroidAI框架
- 程式包android.support.v4.app…不存在AndroidAPP
- 記一次使用策略模式優化程式碼的經歷模式優化
- 使用Android Profile做效能分析及優化Android優化
- 在 .NET 平臺使用 ReflectionDynamicObject 優化反射呼叫程式碼Object優化反射
- 你的 JS 程式碼本可以更加優雅JS
- Golang中常用的程式碼優化點Golang優化
- Android Annotation-讓你的程式碼更加優雅(二)做一個Java詩人(JavaPoet)AndroidJava
- Android效能優化:手把手帶你全面實現記憶體優化Android優化記憶體
- Android 網路優化,使用 HTTPDNS 優化 DNS,從原理到 OkHttp 整合Android優化httpdDNS
- Android com.android.support衝突解決Android
- Android 效能優化 ---- 啟動優化Android優化
- Android效能優化----卡頓優化Android優化
- 優化使用kotlin開發Android app的編譯速度優化KotlinAndroidAPP編譯
- 你覺得我的這段Java程式碼還有優化的空間嗎?Java優化
- 優化你的 PhpStorm優化PHPORM
- Android Bitmap優化Android優化
- Android效能優化Android優化
- [效能優化] 使用 esbuild 為你的構建提速 ?優化UI