使用 Annotation 改善 Android 代碼
簡評:作為一名開發者,沒有人不想寫出高質量的代碼,善用註解就能幫我們大大改善代碼質量。
Annotation(註解)是用於提供有關其他數據信息的,這裡我們討論如何用 annotation 改善我們的 Android 代碼。
Android 官方已經支持了 annotation,可以用下面的方式來集成:
compile 『com.android.support:support-annotations:x.x.x』
下面介紹一些最常用的 annotation:
@Nullable 和 @NonNull,用來檢查給定的變數、參數或返回值是否能夠為空。
- @Nullable,表示變數、參數或返回值可以為 null。
- @NonNull,表示變數、參數或返回值不能為 null。
例如:
@NonNullpublic View getView(@Nullable String s1, @NonNull String s2) { // s1 can be null // s2 should not be null // it must return non null view}
當你這樣調用時:
View view = getView("Amit", null);
Android Studio 會警告你 s2 不應為空。
資源相關註解
肯定都知道在 Android 中的資源文件都是使用 Integer 類型值作為 resId,因為所有的資源 ID 都是 Integer 類型,所以這時可以用註解來聲明要傳入的是什麼資源類型。
例如:
public void setText(@StringRes int resId) { // resId must be string resources // resId should not be a normal int}
當你直接傳入一個普通數字時:
textView.setText(56);
Android Studio 就會警告沒有傳入 R.string 引用。
線程註解
線程註解用於檢查指定方法是否是在指定線程中被調用的。
目前支持的有:
- @MainThread
- @UiThread
- @WorkerThread
- @BinderThread
- @AnyThread
用法就是直接在特定方法上聲明即可。
數值限制類註解
有些時候,我們需要對參數做一些限制約束,這時可以使用 @IntRange, @FloatRange 和 @Size 來校驗參數。
比如在下面的例子中,我們用到 @IntRange 來確保傳入的整數值在 0 至 255 之間。
public void setAlpha(@IntRange(from=0,to=255) int alpha) {}
許可權註解
@RequestPermission 註解能檢查方法調用者是否有某些許可權,但只局限於檢查 manifest 中是否聲明了許可權,不適用與 Android M 之後的動態許可權。
@RequiresPermission(Manifest.permission.SET_WALLPAPER)public abstract void setWallpaper(Bitmap bitmap) throws IOException;
當 manifest 中沒有寫 SET_WALLPAPER 許可權時,就會顯示警告。
更多關於 Android annotation 的知識,大家感興趣的可以去官網進一步學習:
https://developer.android.com/studio/write/annotations.html原文:Improve Your Android Coding Through Annotations
擴展閱讀:
- Android 中使用持續集成 - 知乎專欄
換一個角度思考如何給日誌分級 - 知乎專欄
歡迎關註:知乎專欄「極光日報」,每天為 Makers 導讀三篇優質英文文章。
推薦閱讀:
※重載Finalize引發的內存泄露
※Google 新推出的 Allo 聊天應用,可能要佔領全宇宙了
※從0開始學習 GitHub 系列之「Git 速成」
※能夠買到的話,你選擇魅藍metal,樂1s,榮耀5x這其中的哪個,或者同價位你會選擇哪個??
※鎚子手機的整容臉和羅永浩的自我救贖:M1系列會被市場認可嗎?