日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Android使用注解進行代碼檢查的實現(xiàn)方法

瀏覽:20日期:2022-09-22 13:38:26

Android Studio 內(nèi)置了代碼檢查工具 Lint,可在菜單欄選擇 Analyze > Inspect Code 執(zhí)行相應(yīng)的代碼檢查,代碼檢查能夠根據(jù)推斷一些不合法的潛在問題,有助于在開發(fā)階段發(fā)現(xiàn)開發(fā)者因為主管原因?qū)е碌囊幌麓a問題,Android 官方提供了注解庫 support-annotations 來幫助開發(fā)者及早發(fā)現(xiàn)問題,下面是常用的一些注解,主要內(nèi)容如下:

Nullness注解 資源注解 線程注解 值約束注解 權(quán)限注解 返回值注解 CallSuper注解 Typedef注解 可訪問性注解

Nullness注解

使用 Nullness 注解可以檢查給定變量、參數(shù)和返回值是否允許 null 值,具體如下:

@Nullable :表示可以為 null 的變量、參數(shù)或返回值, @NonNull :表示不可為 null 的變量、參數(shù)或返回值。

@NonNull@Overridepublic View onCreateView(String name, @NonNull Context context,@NonNull AttributeSet attrs) { //...}

資源注解

資源注解的使用可使得在源碼階段讓編輯器檢查書寫的不規(guī)范,也可在一定程度上優(yōu)化代碼結(jié)構(gòu),下面是常見的資源注解如下:

@StringRes: 表示檢查是否包含R.string引用 @ColorRes: 表示檢查是否包含R.color引用 @ColorInt: 表示檢查是否包含表示顏色的整型 @DrawableRes: 表示檢查是否包含R.drawable引用 @DimenRes: 表示檢查是否包含R.dimen引用 @InterpolatorRes:表示檢查是否包含插值器引用

線程注解

線程注解可以檢查某個方法是否從某個特定類型的線程中調(diào)用,支持一下線程注解,具體如下:

@MainThread:表示主線程 @UiThread:表示 UI 線程 @WorkerThread:表示工作線程 @BinderThread:表示Binder線程 @AnyThread:表示任何一個線程

上述注解中 @MainThread 和 @UiThread 在大多時候表示的都是同一線程,如果應(yīng)用中帶有多個試圖,UI 線程可與主線程不同,故可使用 @UIThread 標注與應(yīng)用的視圖層次相關(guān)聯(lián)的方法,使用 @MainThread 僅標注與應(yīng)用生命周期相關(guān)聯(lián)的方法。線程注解最常用的一個用途是 AsyncTask 使用中的方法替換,因為 AsyncTask 會執(zhí)行后臺操作并將結(jié)果發(fā)布到 UI 線程。

值約束注解

使用值約束注解可驗證傳遞的參數(shù)的值的合法性,可以借此指定參數(shù)的設(shè)置范圍,可在一定程度上減少代碼在主觀程度上出現(xiàn)的錯誤,常見的值約束注解如下:

@IntRange:表示可以驗證整型參數(shù)是否在指定范圍內(nèi) @FloatRange:表示可以驗證浮點型參數(shù)是否在指定范圍內(nèi) @Size:表示可以驗證集合、數(shù)組、字符串參數(shù)是否在指定范圍內(nèi),可指定最大值、最小值以及確切值

上面的注解有一些可使用的參數(shù),如 from、to、min 等,使用時具體在某個注解體重查看定義即可。

權(quán)限注解

權(quán)限注解 @RequiresPermission 可以驗證方法調(diào)用方的權(quán)限,即當(dāng)使用了權(quán)限注解的方法時會檢查有沒有指定的權(quán)限,如果沒有則會提示要在 AndroidManifest.xml 文件中申明權(quán)限,如果是危險權(quán)限還有進行權(quán)限動態(tài)申請,使用方式參考如下:

/** * 單個權(quán)限檢查 * @param message */@RequiresPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)public void setMessage(String message) {}/** * 全部權(quán)限檢查 * @param message */@RequiresPermission(allOf = { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE})public void setMesage(String message) {}/** * 某個權(quán)限檢查 * @param message */@RequiresPermission(anyOf = { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE})public void setMesage(String message) {}

返回值注解

返回值注解 @CheckResult 會檢查某個方法的返回值是否被使用,如果沒有被使用,則會根據(jù) suggest 配置建議使用相同公民沒有返回值的另一個方法,如果返回值使用了,則和未加該注解的方法一樣,使用方式參考如下:

@CheckResult(suggest='#enforcePermission(String,int,int,String)')public int checkPermission(@NonNull String permission, int pid, int uid){ return 0;}

如果沒有使用返回值提示如下:

Android使用注解進行代碼檢查的實現(xiàn)方法

當(dāng)返回值沒有被使用,則會建議使用相同功能沒有返回值的另一個方法,簡而言之,返回值注解 @CheckResult 能夠表示某個方法實際使用的時方法本身的處理還是方法最終的處理結(jié)果。

CallSuper注解

使用 @CallSuper 注解會驗證子類的重寫方法是否調(diào)用父類的實現(xiàn),這樣約束的好處是可保證父類的實現(xiàn)不會修改,當(dāng)然,如果不使用該注解,子類重寫父類的方法可以不調(diào)用弗父類的默認實現(xiàn),具體參考如下:

/** * 父類 * @CallSuper注解的使用 */public class Test { //使用@CallSuper注解,子類重寫該方法時必須調(diào)用該方法 @CallSuper protected void onCreate(){ }}

下面是 Test 類的實現(xiàn)類:

/** * 子類 * @CallSuper注解的使用 */public class TestImpl extends Test{ @Override protected void onCreate() { super.onCreate(); /** * 如果不調(diào)用父類的方法,則會提示 * Some methods, such as View#onDetachedFromWindow, require that you also call the super implementation as part of your method. */ }}

Typedef注解

使用 @IntDef 和 @StringDef 注解 可以創(chuàng)建整型和字符串的枚舉注解來驗證其他代碼中使用的某些整型和字符串,可以保證代碼中的某些常量整型或常量字符串是某些具體定義的常量集,這兩個注解的位置只能是注解。

開發(fā)中總會使用到枚舉,枚舉在一定程度上可使得代碼結(jié)構(gòu)更清晰,但枚舉的使用會增加內(nèi)存的開銷,這里可以用 Typedef 注解的方式來代替枚舉,下面是 Tyoedef 注解的使用,參考如下:

/** * Typedef 注解的定義 */public class ActionType { public static final int ACTION_TYPE_0 = 0; public static final int ACTION_TYPE_1 = 1; public static final int ACTION_TYPE_2 = 2; @Retention(RetentionPolicy.SOURCE) @IntDef({ACTION_TYPE_0,ACTION_TYPE_1,ACTION_TYPE_2}) public @interface ActionTypeDef{ }}

下面是上述 Typedef 注解的使用方式,參考如下:

/** * Typedef注解的使用 * @param value */private void setValue(@ActionType.ActionTypeDef int value) { switch (value) { case ActionType.ACTION_TYPE_0: break; case ActionType.ACTION_TYPE_1: break; case ActionType.ACTION_TYPE_2: break;// case 100://不能使用未定義的整型// break; }}

可見 Typedef 注解約束了使用到的某些整型,當(dāng)然還可以是字符串,這樣也能達到枚舉的作用。

可訪問性注解

可訪問性注解是 @VisibleForTesting 和 @Keep 可以表示方法、字段、類的可訪問性。具體如下:

@VisibleForTesting:表示注解的某個代碼塊的可見性高于能夠測試時需要的水平 @Keep:表示被注解的代碼塊將不會被混淆。

最常用的可能就是資源注解,如 @StringRes、@ColorRes、@ColorInt等,還有Typeof 注解,該注解可以在替換枚舉在 Android 開發(fā)中帶來的性能影響,如果平時留意這些注解在 Android 源碼中也經(jīng)常使用,所以可在開發(fā)過程中嘗試去使用這些注解以進行必要的代碼檢查。

總結(jié)

到此這篇關(guān)于Android使用注解進行代碼檢查的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)Android 注解代碼檢查內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Android
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产日产一区| 国产精品大片免费观看| 国产毛片一区二区三区| 乱一区二区av| 在线看片国产福利你懂的| 久久中文字幕一区二区三区| 欧美日本一区| 亚洲有吗中文字幕| 国产日产精品_国产精品毛片| 男人的天堂亚洲一区| 日韩国产91| 欧美aⅴ一区二区三区视频| 日本午夜精品视频在线观看| 色综合五月天| 亚洲精品中文字幕乱码| 日韩在线播放一区二区| 黄色亚洲在线| aa国产精品| 久久97久久97精品免视看秋霞| 欧美日韩在线二区| 丝袜国产日韩另类美女| 男女男精品视频网| 久久亚洲国产精品一区二区| 精品久久久久中文字幕小说| 精品网站aaa| 在线亚洲人成| 亚洲18在线| 成人污污视频| 丝袜诱惑制服诱惑色一区在线观看 | 黄毛片在线观看| 久久国产电影| 国产日韩欧美高清免费| 欧美国产先锋| 精品亚洲精品| 色婷婷久久久| 亚洲一区有码| 麻豆国产欧美日韩综合精品二区| 日本а中文在线天堂| 婷婷色综合网| 国产在线视频欧美一区| 樱桃视频成人在线观看| 亚洲午夜av| 日韩成人午夜精品| 中文字幕在线高清| 蜜乳av另类精品一区二区| 日本高清久久| 国产精品久久久久久久免费观看 | 人人爽香蕉精品| 久久狠狠久久| 成人午夜精品| 国产精品巨作av| 日本不卡免费高清视频在线| 最新日韩av| 国产精品午夜av| 久久中文视频| 国产欧美日韩精品一区二区免费| 国产精品亚洲一区二区三区在线观看| 欧美日韩视频| 麻豆精品av| 99视频精品| 蜜桃久久久久| 先锋亚洲精品| 国模大尺度视频一区二区| 亚洲一区日本| 中文av在线全新| 日韩精选在线| 三级小说欧洲区亚洲区| 日韩高清欧美激情| 国产99亚洲| 国产极品一区| 日韩精品一卡二卡三卡四卡无卡| 激情中国色综合| 亚洲欧美日韩一区在线观看| 麻豆视频一区二区| 亚洲ab电影| 91久久亚洲| 亚洲综合在线电影| 国产精品主播| 噜噜噜躁狠狠躁狠狠精品视频 | 亚洲专区视频| 999久久久免费精品国产| 国产探花一区二区| 国产视频一区免费看| 中文字幕一区久| 日韩精品电影一区亚洲| 婷婷综合在线| 韩国女主播一区二区三区| 日韩福利视频一区| 噜噜噜躁狠狠躁狠狠精品视频 | 蜜臀av一区二区三区| 久久激情婷婷| 国语精品一区| 国产精品sm| 欧美精品影院| 中文字幕日韩高清在线| 伊人久久大香线蕉av不卡| 色欧美自拍视频| 久久精品国产999大香线蕉| 国产日韩一区二区三免费高清| 一区二区三区四区精品视频| 亚洲国产专区| 91精品精品| 久久久精品久久久久久96| 精品国产亚洲一区二区三区大结局| 亚洲精品在线国产| 亚洲永久字幕| 99热精品在线| 9久re热视频在线精品| 欧美91视频| 在线精品亚洲欧美日韩国产| 久久三级中文| 国产一区福利| 国产一区二区三区久久| 久久精品毛片| 激情综合五月| 国产精品国产三级国产在线观看| 欧美激情一区| 国产精品亚洲欧美一级在线| 欧美片网站免费| 97久久超碰| 国产欧美日韩精品一区二区三区 | 男人操女人的视频在线观看欧美| 99视频在线精品国自产拍免费观看| 久久激情婷婷| 婷婷综合在线| 亚洲欧美网站| 亚洲精品高潮| 日韩av中文在线观看| 日本午夜精品久久久久| 国产精品一区毛片| 久久中文欧美| 蜜臀国产一区| 欧美日韩国产传媒| 国产一区白浆| 午夜天堂精品久久久久| 日本特黄久久久高潮| 国产精品一区二区三区四区在线观看| 欧美精品中文| 狂野欧美性猛交xxxx| 高清在线一区| 精品日韩视频| 成人av二区| 日韩中文字幕1| 日韩二区三区四区| 美女国产精品久久久| 成年男女免费视频网站不卡| 久久婷婷av| 麻豆亚洲精品| 欧美日一区二区三区在线观看国产免| 欧美激情精品| 日韩高清成人| 噜噜噜久久亚洲精品国产品小说| 日本中文字幕不卡| 欧美日韩亚洲一区| 高清不卡亚洲| 亚洲一区欧美激情| 国产精品三级| 久久久国产亚洲精品| 亚洲视频二区| 久久只有精品| 欧美日韩国产在线观看网站 | 最新日韩欧美| 青青草视频一区| 国产美女高潮在线观看| 亚洲美洲欧洲综合国产一区 | 国产精品videosex极品| 日韩欧美一区二区三区在线视频| 欧美1级日本1级| 日本精品久久| 激情亚洲影院在线观看| 视频一区在线播放| 国产精品成人**免费视频| 日韩国产一区二区三区| 免费欧美日韩| 国产精品欧美三级在线观看| 999久久久91| 欧美有码在线| 久久青草久久| 国产日韩欧美一区在线| 蜜臀91精品国产高清在线观看| 亚洲精品动态| 国产超碰精品| 日韩国产一二三区| 日本精品不卡| 欧美在线日韩| 国内精品99| 麻豆国产精品视频| 视频一区中文字幕| www.com.cn成人| 日本不卡视频在线观看| 久久蜜桃精品| 国产精品永久| 久久国产66| 伊人久久高清| 国产精品一区2区3区| 99精品电影| 国产精品xvideos88| 免费精品视频在线| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 911精品国产|