使用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註解使用之使用Support Annotations註解優化程式碼Android優化
- Android Support Annotations 使用詳解Android
- 深入淺出Android Support AnnotationsAndroid
- Error:Conflict with dependency 'com.android.support:support-annotations' in projErrorAndroid
- Android 程式碼優化Android優化
- Android效能優化——程式碼優化(一)Android優化
- Android Note - 程式碼優化Android優化
- 優化你的程式碼結構 --- MVP優化MVP
- Android 效能優化:使用 Lint 優化程式碼、去除多餘資源Android優化
- Android程式碼優化十九條Android優化
- 使用Web Worker優化程式碼Web優化
- Android效能優化篇:從程式碼角度進行優化Android優化
- Android開發優化之——從程式碼角度進行優化Android優化
- Android程式碼優化小技巧總結Android優化
- 優化程式碼中大量的if/else,你有什麼方案?優化
- 程式碼優化優化
- Android 配置 Ant 指令碼之程式碼混淆和優化Android指令碼優化
- 使用 IoC 容器進行程式碼優化行程優化
- 使用Async,讓你的Node.js程式碼更優雅Node.js
- 你見過哪些優雅的 Java 程式碼最佳化技巧?Java
- Effective Java -- 使用try-with-resources優化程式碼Java優化
- Android效能優化你瞭解多少Android優化
- javaScript程式碼優化JavaScript優化
- Java程式碼優化Java優化
- Android Annotation-讓你的程式碼和設計更加優雅(一)Android
- [Android]你不知道的Android程式化–程式資訊Android
- 優化If else(簡化程式碼)優化
- 從Android資源角度談Android程式碼記憶體優化Android記憶體優化
- Android:隨筆——Android必須知道的註解AnnotationsAndroid
- 細說 Android Annotations 註解框架Android框架
- 優化程式碼中的“壞味道”優化
- 使用with子句優化程式碼中重複查詢優化
- Android原始碼分析–ArrayMap優化Android原始碼優化
- 使用 Laravel Page Speed 優化你的專案Laravel優化
- [Android]你不知道的Android程式化(2)--建立程式Android
- iOS程式碼效能優化iOS優化
- 優化你的CSS優化CSS
- android原始碼檢視 android-support-v4.jarAndroid原始碼JAR