android studio lint基本解析

可訪問性(accessibility)

1、Image without contentDescription圖像沒有內容描述

這個是需要對圖片進行一個描述,不然會有警告,一般情況下進行統一的標識加入

android:c ontentDescription="@string/abc

正確性(correctness)

2、Attribute unused on older versions 舊版本中未使用的屬性

3、Class is not registered in the manifest 類沒有在清單中注冊

沒有注冊的activity

4、Duplicate ids across layouts combined with include tags布局中重復的ids與包含標簽相結合

引用的布局和父布局包含相同的id

5、Implied locale in date format 使用日期格式的默示語言環境

http://blog.csdn.net/revival_liang/article/details/51812723

時間聲明問題

SimpleDateFormat format = new SimpleDateFormat("MM月dd日HH時mm分ss秒");//有報警問題 SimpleDateFormat format = new SimpleDateFormat("MM月dd日HH時mm分ss秒", Locale.getDefault());

6、Incorrect order of elements in manifest 清單中元素的順序不正確

有些權限需要寫道application之前,示例極光的一個權限

<uses-permission android:name="packagename.permission.JPUSH_MESSAGE" />

7、Layout Inflation without a Parent 父布局沒有膨脹

示例 使用null
View view = inflater.inflate(R.layout.progressbar, null);

正確的使用 第三個參數設置為了true,表示將第一個參數所指定的布局添加到第二個參數的View中

LinearLayout ll = (LinearLayout) findViewById(R.id.ll); LayoutInflater inflater = LayoutInflater.from(this); inflater.inflate(R.layout.linearlayout, ll,true);

8、Missing commit() calls 失蹤的commit()調用

一般報錯

After creating a FragmentTransaction, you typically need to commit it as well

fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.replace(R.id.xxxx, new xxxxFragment().newInstance(xxxx),"xxxx"); fragmentTransaction.commit(); 改為(暫未測試效果) fragmentManager.beginTransaction().replace(R.id.xxxx, new xxxxFragment().newInstance(xxxx),"xxxx").commit();

9、Missing commit() on SharedPreference editor

`
SharedPreferences.Editor edit = sp.edit();

edit.putString("isFirstLogin", "0");

edit.commit();

改為 apply()

`
這兩個方法的區別在于:

  1. apply沒有返回值而commit返回boolean表明修改是否提交成功
  2. apply是將修改數據原子提交到內存, 而后異步真正提交到硬件磁盤, 而commit是同步的提交到硬件磁盤,因此,在多個并發的提交commit的時候,他們會等待正在處理的commit保存到磁盤后在操作,從而降低了效率。而apply只是原子的提交到內容,后面有調用apply的函數的將會直接覆蓋前面的內存數據,這樣從一定程度上提高了很多效率。
  3. apply方法不會提示任何失敗的提示。
    由于在一個進程中,sharedPreference是單實例,一般不會出現并發沖突,如果對提交的結果不關心的話,建議使用apply,當然需要確保提交成功且有后續操作的話,還是需要用commit的。

10、Nested scrolling widgets 嵌套滾動窗口小部件

scrollview中嵌套了listview

11、Obsolete Gradle Dependency 過時Gradle依賴

提示android 升級高版本

12、RecyclerView Problems recycleerview的問題

在onBindviewholder方法中不能使用position 應該使用holer.getAdapterPosition()來獲取position 有時候在做item換位置時直接使用postiion會發生位置錯誤 無法獲取到變換后的位置

13、ScrollView size validation scrollview大小的驗證

ScrollView里的LinearLayout的高度應該使用wrap_content

14、Reference to an id that is not in the current layout 引用不在當前布局內的id

15、Target SDK attribute is not targeting latest version 目標SDK屬性不是針對最新版本的

15、Unreachable state in a <selector>

In a selector, only the last child in the state list should omit a state qualifier. If not, all subsequent items in the list will be ignored since the given item will match all

在選擇器中,只有狀態列表中的最后一個子應該省略一個狀態限定符。如果沒有,則列表中的所有后續項都將被忽略,因為給定的項將匹配所有項

16、Using deprecated resources 過時的方法

17、Using inlined constants on older versions quanxu

Internationalization 國際化

18、Hardcoded text 硬編碼

https://toutiao.io/posts/572671/app_preview

19、TextView Internationalization

java 代碼中使用的漢字應使用常量來代替(個人建議)

20、 Bidirectional Text 雙向設置

如 :
android:paddingLeft="15dp"
需要設置兩側對應
android:paddingLeft="15dp" android:paddingRight="15dp"

Performance 性能

21、FrameLayout can be replaced with <merge> tag FrameLayout可以替換為<merge>標簽 MergeRootFrame

如果FrameLayout是根布局,并且不提供背景或填充等,它通常可以替換為稍微更有效的<merge>標簽。請注意,這取決于上下文,因此請確保在繼續之前了解<merge>標記的工作原理。

22、Handler reference leaks handle引起程序泄露參考

因為同一個線程下的handler共享一個looper對象,消息中保留了對handler的引用,由于Java在生成內部類的時候,原本沒有構造器的內部類會被生成一個帶外部類參數的構造器,這個內部類就會持有外部類的隱式引用。Handler其實隱式的持有了Activity的引用,只要有消息在隊列中,那么handler便無法被回收,如果handler不是static那么使用Handler的Service和Activity就也無法被回收。這就可能導致內存泄露

http://blog.csdn.net/liangchengfeng/article/details/51999882

23、HashMap can be replaced with SparseArray HashMap可以用SparseArray替換

`
HashMap<Integer, HashMap<String, String>> rightPopCommonList = new HashMap<Integer, HashMap<String, String>>();
改為
HashMap<Integer, HashMap<String, String>> rightPopCommonList = new new HashMap<>();

`

24、Inefficient layout weight 低效的權重布局

在 設置權重屬性的時候相應的寬高屬性應設為0dp

25、Layout hierarchy is too deep 布局層次結構太深

嵌套過多的布局不利于性能。考慮使用更平的布局(比如相對布局或GridLayout)。默認的最大深度為10,但可以使用環境變量androidlintmaxdepth配置

26、Memory allocations within drawing code 繪制代碼內的內存分配

Avoid object allocations during draw/layout operations (preallocate and reuse instead)
You should avoid allocating objects during a drawing or layout operation. These are called frequently, so a smooth UI can be interrupted by garbage collection pauses caused by the object allocations. The way this is generally handled is to allocate the needed objects up front and to reuse them for each drawing operation. Some methods allocate memory on your behalf (such as Bitmap.create), and these should be handled in the same way.

27、Missing baselineAligned attribute 消失的baselineAligned屬性

baselineAligned屬性默認為true 這是基準線設置,設置為fale時它的子控件不對齊
當linearlayout為水平時設置為fale 獲取更好的性能
http://blog.csdn.net/bdmh/article/details/48495583

28、Nested layout weights 嵌套布局權重

避免權重套權重,當一個非零權重的線性布局被嵌套在另一個帶有非零權重的線性布局中,那么度量的數量就會呈指數增長。

29、Node can be replaced by a TextView with compound drawables 節點可以用一個帶有復合繪圖的TextView來替換

讓只有圖片和文字的一個小布局合并為一個textview 這個視情況。

30、Obsolete layout params 布局中無用的參數

31、Overdraw: Painting regions more than once 過度繪制

一般布局根背景不需要在設置bg了 子布局的背景擋住的父布局造成了過度繪制

32、Static Field Leaks 靜態變量泄露

主要是上下文對象不要設置為static

33、Unused resources 無用的資源

34、Useless leaf layout 無用的布局

35、Useless parent layout無用的父布局

36、View Holder Candidates adapter沒有重用子布局

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,996評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

推薦閱讀更多精彩內容