android studio lint基本解析

可訪問性(accessibility)

1夯巷、Image without contentDescription圖像沒有內(nèi)容描述

這個(gè)是需要對(duì)圖片進(jìn)行一個(gè)描述,不然會(huì)有警告池摧,一般情況下進(jìn)行統(tǒng)一的標(biāo)識(shí)加入

android:c ontentDescription="@string/abc

正確性(correctness)

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

3裁着、Class is not registered in the manifest 類沒有在清單中注冊(cè)

沒有注冊(cè)的activity

4荸型、Duplicate ids across layouts combined with include tags布局中重復(fù)的ids與包含標(biāo)簽相結(jié)合

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

5盹靴、Implied locale in date format 使用日期格式的默示語言環(huán)境

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

時(shí)間聲明問題

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

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

有些權(quán)限需要寫道application之前瑞妇,示例極光的一個(gè)權(quán)限

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

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

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

正確的使用 第三個(gè)參數(shù)設(shè)置為了true,表示將第一個(gè)參數(shù)所指定的布局添加到第二個(gè)參數(shù)的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()調(diào)用

一般報(bào)錯(cuò)

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(); 改為(暫未測(cè)試效果) 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()

`
這兩個(gè)方法的區(qū)別在于:

  1. apply沒有返回值而commit返回boolean表明修改是否提交成功
  2. apply是將修改數(shù)據(jù)原子提交到內(nèi)存, 而后異步真正提交到硬件磁盤, 而commit是同步的提交到硬件磁盤,因此蔓倍,在多個(gè)并發(fā)的提交commit的時(shí)候悬钳,他們會(huì)等待正在處理的commit保存到磁盤后在操作,從而降低了效率偶翅。而apply只是原子的提交到內(nèi)容他去,后面有調(diào)用apply的函數(shù)的將會(huì)直接覆蓋前面的內(nèi)存數(shù)據(jù),這樣從一定程度上提高了很多效率倒堕。
  3. apply方法不會(huì)提示任何失敗的提示。
    由于在一個(gè)進(jìn)程中爆价,sharedPreference是單實(shí)例垦巴,一般不會(huì)出現(xiàn)并發(fā)沖突媳搪,如果對(duì)提交的結(jié)果不關(guān)心的話,建議使用apply骤宣,當(dāng)然需要確保提交成功且有后續(xù)操作的話秦爆,還是需要用commit的。

10憔披、Nested scrolling widgets 嵌套滾動(dòng)窗口小部件

scrollview中嵌套了listview

11等限、Obsolete Gradle Dependency 過時(shí)Gradle依賴

提示android 升級(jí)高版本

12、RecyclerView Problems recycleerview的問題

在onBindviewholder方法中不能使用position 應(yīng)該使用holer.getAdapterPosition()來獲取position 有時(shí)候在做item換位置時(shí)直接使用postiion會(huì)發(fā)生位置錯(cuò)誤 無法獲取到變換后的位置

13芬膝、ScrollView size validation scrollview大小的驗(yàn)證

ScrollView里的LinearLayout的高度應(yīng)該使用wrap_content

14望门、Reference to an id that is not in the current layout 引用不在當(dāng)前布局內(nèi)的id

15、Target SDK attribute is not targeting latest version 目標(biāo)SDK屬性不是針對(duì)最新版本的

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

在選擇器中筹误,只有狀態(tài)列表中的最后一個(gè)子應(yīng)該省略一個(gè)狀態(tài)限定符。如果沒有癣缅,則列表中的所有后續(xù)項(xiàng)都將被忽略厨剪,因?yàn)榻o定的項(xiàng)將匹配所有項(xiàng)

16、Using deprecated resources 過時(shí)的方法

17友存、Using inlined constants on older versions quanxu

Internationalization 國際化

18祷膳、Hardcoded text 硬編碼

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

19、TextView Internationalization

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

20屡立、 Bidirectional Text 雙向設(shè)置

如 :
android:paddingLeft="15dp"
需要設(shè)置兩側(cè)對(duì)應(yīng)
android:paddingLeft="15dp" android:paddingRight="15dp"

Performance 性能

21直晨、FrameLayout can be replaced with <merge> tag FrameLayout可以替換為<merge>標(biāo)簽 MergeRootFrame

如果FrameLayout是根布局,并且不提供背景或填充等侠驯,它通陈崭眩可以替換為稍微更有效的<merge>標(biāo)簽。請(qǐng)注意吟策,這取決于上下文儒士,因此請(qǐng)確保在繼續(xù)之前了解<merge>標(biāo)記的工作原理。

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

因?yàn)橥粋€(gè)線程下的handler共享一個(gè)looper對(duì)象着撩,消息中保留了對(duì)handler的引用,由于Java在生成內(nèi)部類的時(shí)候匾委,原本沒有構(gòu)造器的內(nèi)部類會(huì)被生成一個(gè)帶外部類參數(shù)的構(gòu)造器拖叙,這個(gè)內(nèi)部類就會(huì)持有外部類的隱式引用。Handler其實(shí)隱式的持有了Activity的引用赂乐,只要有消息在隊(duì)列中薯鳍,那么handler便無法被回收,如果handler不是static那么使用Handler的Service和Activity就也無法被回收挨措。這就可能導(dǎo)致內(nèi)存泄露

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 低效的權(quán)重布局

在 設(shè)置權(quán)重屬性的時(shí)候相應(yīng)的寬高屬性應(yīng)設(shè)為0dp

25、Layout hierarchy is too deep 布局層次結(jié)構(gòu)太深

嵌套過多的布局不利于性能斩松×嫖ǎ考慮使用更平的布局(比如相對(duì)布局或GridLayout)。默認(rèn)的最大深度為10惧盹,但可以使用環(huán)境變量androidlintmaxdepth配置

26乳幸、Memory allocations within drawing code 繪制代碼內(nèi)的內(nèi)存分配

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屬性默認(rèn)為true 這是基準(zhǔn)線設(shè)置钧椰,設(shè)置為fale時(shí)它的子控件不對(duì)齊
當(dāng)linearlayout為水平時(shí)設(shè)置為fale 獲取更好的性能
http://blog.csdn.net/bdmh/article/details/48495583

28粹断、Nested layout weights 嵌套布局權(quán)重

避免權(quán)重套權(quán)重,當(dāng)一個(gè)非零權(quán)重的線性布局被嵌套在另一個(gè)帶有非零權(quán)重的線性布局中演侯,那么度量的數(shù)量就會(huì)呈指數(shù)增長(zhǎng)姿染。

29、Node can be replaced by a TextView with compound drawables 節(jié)點(diǎn)可以用一個(gè)帶有復(fù)合繪圖的TextView來替換

讓只有圖片和文字的一個(gè)小布局合并為一個(gè)textview 這個(gè)視情況秒际。

30悬赏、Obsolete layout params 布局中無用的參數(shù)

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

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

32娄徊、Static Field Leaks 靜態(tài)變量泄露

主要是上下文對(duì)象不要設(shè)置為static

33闽颇、Unused resources 無用的資源

34、Useless leaf layout 無用的布局

35寄锐、Useless parent layout無用的父布局

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市橄仆,隨后出現(xiàn)的幾起案子剩膘,更是在濱河造成了極大的恐慌,老刑警劉巖盆顾,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怠褐,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡您宪,警方通過查閱死者的電腦和手機(jī)奈懒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宪巨,“玉大人磷杏,你說我怎么就攤上這事∧笞浚” “怎么了极祸?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我遥金,道長(zhǎng)峦椰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任汰规,我火速辦了婚禮,結(jié)果婚禮上物邑,老公的妹妹穿的比我還像新娘溜哮。我一直安慰自己,他們只是感情好色解,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布茂嗓。 她就那樣靜靜地躺著,像睡著了一般科阎。 火紅的嫁衣襯著肌膚如雪述吸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天锣笨,我揣著相機(jī)與錄音蝌矛,去河邊找鬼。 笑死错英,一個(gè)胖子當(dāng)著我的面吹牛入撒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播椭岩,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼茅逮,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了判哥?” 一聲冷哼從身側(cè)響起献雅,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎塌计,沒想到半個(gè)月后挺身,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡夺荒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年瞒渠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片技扼。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡伍玖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出剿吻,到底是詐尸還是另有隱情窍箍,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站椰棘,受9級(jí)特大地震影響纺棺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜邪狞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一祷蝌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧帆卓,春花似錦巨朦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吁津,卻和暖如春棚蓄,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背碍脏。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國打工梭依, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人潮酒。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓睛挚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親急黎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扎狱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容