国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

使用Log的一些姿勢

移動(dòng)開發(fā) Android
LogCat是Android開發(fā)者們最熟悉不過的日志打印工具,幾乎每一個(gè)Android項(xiàng)目里面都包含著大量的Log相關(guān)代碼。不過,或許是因?yàn)長og實(shí)在是太過于普通,所以許多人在使用它的時(shí)候就顯得非常隨意,這些錯(cuò)誤的使用姿勢卻會(huì)在不經(jīng)意間給我們帶來不少的大坑。

[[176407]]

LOG 是任何一種編程語言的***個(gè)API,通常被初學(xué)者用來打印 Hello, World!。 有研究顯示,

不使用 LOG 或者使用姿勢錯(cuò)誤的人,感情路都走得很辛苦,有七成的比例會(huì)在 34 歲的時(shí)候跟自己不愛的人結(jié)婚,而其余三成的人***只能把遺產(chǎn)留給自己的貓。畢竟愛情需要書寫,不能是一整張白紙。

LogCat是Android開發(fā)者們最熟悉不過的日志打印工具,幾乎每一個(gè)Android項(xiàng)目里面都包含著大量的Log相關(guān)代碼。不過,或許是因?yàn)長og實(shí)在是太過于普通,所以許多人在使用它的時(shí)候就顯得非常隨意,這些錯(cuò)誤的使用姿勢卻會(huì)在不經(jīng)意間給我們帶來不少的大坑。

Log相關(guān)的一些問題

沒有關(guān)閉調(diào)試用的LOG

許多同學(xué)喜歡在開發(fā)階段用Log輸出當(dāng)前的一些環(huán)境數(shù)據(jù),用于調(diào)試代碼,但是在調(diào)試完成后卻忘了關(guān)閉這些Log,導(dǎo)致發(fā)版出去的應(yīng)用里面還會(huì)繼續(xù)輸出這些LOG,這樣不僅會(huì)造成不必要的性能丟失,也會(huì)暴露一些敏感的數(shù)據(jù),這些都是我們不愿看到的。

首先,我們要給Log進(jìn)行分級(jí),規(guī)定“DEBUG版本輸出哪一些級(jí)別的LOG并屏蔽哪一些級(jí)別的LOG,而RELEASE版本又輸出另一些級(jí)別的LOG并屏蔽另一些級(jí)別的LOG”,這樣在開發(fā)階段能夠輸出我們調(diào)試需要的LOG,而同時(shí)又能保證放送的版本能夠屏蔽這些敏感的LOG。但是在開發(fā)階段我們不應(yīng)該特意去注意這些細(xì)節(jié),所以必須開發(fā)一個(gè)Log工具庫,在框架層級(jí)解決這個(gè)需求。

同時(shí),需要注意的是,用于作為“開啟/關(guān)閉Log”的開關(guān)必須是一個(gè)常量,而不能是一個(gè)變量(使用常量的話,在編譯代碼的時(shí)候,如果常量為false),編譯器會(huì)直接把調(diào)試部分的Log代碼直接去掉,而使用變量作為開關(guān)的話,這個(gè)判斷邏輯會(huì)繼續(xù)保留,一方面會(huì)造成性能丟失,另一方面在運(yùn)行時(shí)也可以通過Hack手段強(qiáng)行開啟這部分Log代碼。

另外,“開啟/關(guān)閉Log”的開關(guān)必須寫在Log方法外部,也就是說必須先判斷“開啟/關(guān)閉Log”條件,再調(diào)用Log方法,因?yàn)樵谡{(diào)用Log方法的時(shí)候已經(jīng)造成了性能丟失,而且調(diào)用方法的時(shí)候,會(huì)先構(gòu)造好改方法需要的參數(shù)(按照參數(shù)順序從右往左),再調(diào)用方法,而許多人喜歡在調(diào)用Log方法的時(shí)候計(jì)算需要打印出來的內(nèi)容,這里是最容易造成性能丟失的地方。因此,如果為了圖方便,寫一個(gè)Log工具類,在工具類內(nèi)部去判斷是否應(yīng)該開啟或關(guān)閉Log,事實(shí)上已經(jīng)造成了不少的性能丟失。正確的使用姿勢應(yīng)該是:

  1. public static final boolean DEBUG = true
  2.  
  3. if (DEBUG) { 
  4.   Log.v(TAG, "log something"); 
  5.  

在循環(huán)體內(nèi)部打印LOG

盡管Log造成的性能損失很小,但是如果在循環(huán)體內(nèi)部循環(huán)調(diào)用Log方法的話,那總體的丟失的非??捎^了,所以不應(yīng)該在循環(huán)體內(nèi)部使用Log,正確的做法是在循環(huán)體內(nèi)部拼接需要打印的內(nèi)容,等跳出循環(huán)體再一次打印出來。

除了常見的循環(huán)體外,還要一個(gè)需要注意的場景就是Adapter。ListView/RecyclerView是Android開發(fā)中最常用的控件,因此Adapter使用的情景也很多。滾動(dòng)屏幕的時(shí)候,ListView/RecyclerView會(huì)在通過Adapter頻繁地綁定ItemView和數(shù)據(jù),而且這些都是在UI線程里進(jìn)行的,所以如果在綁定的過程中調(diào)用Log,可能會(huì)造成明顯的卡頓。

至于Log到底會(huì)丟失多少性能,一般情況下,Log的性能丟失很小,畢竟是這么常見的系統(tǒng)Api,肯定是身經(jīng)百戰(zhàn),早就是“best performance”了。不過我曾經(jīng)有個(gè)RecyclerView在MIUI上非???,一開始我是RecyclerView布局沒優(yōu)化好,最終定位到Adapter內(nèi)部的一處Log上,卡頓的地方出現(xiàn)在Log的Native實(shí)現(xiàn)。MIUI到底對(duì)用戶輸出的日志做了什么處理呢?非常神奇。

無法獲取重要LOG內(nèi)容

在調(diào)試代碼的時(shí)候,我們經(jīng)常通過LOG來定位Bug。同理,當(dāng)線上的版本出現(xiàn)問題的時(shí)候,我們也希望能通過LOG來定位問題所在。但是問題是用戶的設(shè)備上的打印出來的LOG我們根本沒有方法獲取,唯一的手段就是當(dāng)用戶設(shè)備出現(xiàn)問題的時(shí)候,把設(shè)備借過來連上IDE用LogCat查看輸出的LOG……顯然這是不可行的。

這種時(shí)候,我們可以在打印重要LOG(比如重要路徑的觸發(fā)點(diǎn)、或者一些異常類的信息)的時(shí)候,一并把這些信息記錄到文件里。在用戶反饋系統(tǒng)里面,一并將這些文件上傳到我們的用戶反饋服務(wù)器,這樣在處理反饋問題的時(shí)候,就能拿到重要的參考日志了。

BLog

BLog 是 Android SDK 的 LOG 工具 {@Link android.util.Log} 的加強(qiáng)版,以方便在開發(fā)時(shí)用來

操作調(diào)試日志。

特點(diǎn)

  1. 簡單易用的API;
  2. 支持輸出線程信息;
  3. 支持設(shè)置LogLevel,方便在生產(chǎn)環(huán)境關(guān)閉調(diào)試用的LOG;
  4. 支持將LOG內(nèi)容寫入文件,以便通過文件LOG定位用戶反饋的問題;

注意,盡管BLog支持關(guān)閉Log的輸出,但是在你調(diào)用 BLog.v(String) 的時(shí)候,其實(shí)已經(jīng)造成了性能

丟失,所以請(qǐng)盡量使用正確的姿勢來使用BLog,比如

  1. if (BuildConfig.DEBUG) {   
  2. BLog.v(TAG, "log verbose"); 

 

責(zé)任編輯:龐桂玉 來源: segmentfault
相關(guān)推薦

2017-11-09 13:19:51

2019-05-07 10:28:27

2021-10-12 23:10:58

UnsafeJavaJDK

2009-07-21 09:29:27

iBATIS使用

2023-10-09 08:14:10

Helm管理應(yīng)用

2015-08-17 15:53:58

Linux桌面

2022-04-02 14:43:59

Promethues監(jiān)控

2023-11-10 08:48:09

Lombok庫Java8

2010-05-10 15:41:38

Unix系統(tǒng)

2015-09-23 10:06:37

cocoapods

2024-06-21 08:21:18

2011-07-19 18:11:09

iPhone 開發(fā)

2013-03-29 13:17:53

XCode調(diào)試技巧iOS開發(fā)

2011-07-13 09:13:56

Android設(shè)計(jì)

2012-05-21 10:13:05

XCode調(diào)試技巧

2009-07-21 09:55:45

iBATIS分頁

2011-03-15 17:46:43

2013-07-02 10:18:20

編程編程策略

2013-07-02 09:43:02

編程策略

2011-06-01 16:50:21

JAVA
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

自拍偷拍亚洲欧美| 亚洲亚洲精品三区日韩精品在线视频| 国产丝袜在线播放| 亚洲综合一区二区精品导航| 国产av不卡一区二区| 在线精品一区| 97自拍视频| 亚洲乱码免费伦视频| 国产精品久久久久91| 欧美美乳视频| 性欧美长视频免费观看不卡| 成人激情久久| 日韩中文字幕网站| 欧美日韩精品一区二区三区视频| 精品久久一区二区三区| 青青草原av在线| 日韩欧美二区三区| 国产在线高潮| 日韩一区二区在线看| 手机av在线播放| 日韩色视频在线观看| 日本三级在线观看网站| 欧美一区二区三区免费| 国产后进白嫩翘臀在线观看视频| 日韩一区二区中文字幕| 2020国产在线视频| 日韩精品在线网站| 中文日产幕无线码一区二区| 亚洲美女自拍视频| 婷婷激情成人| 欧美猛少妇色xxxxx| 精品国产18久久久久久洗澡| 欧美亚洲日本黄色| 欧美精品色图| 亚洲精品日韩激情在线电影| 在线日韩欧美| 日本中文不卡| 国产传媒一区在线| 国产日韩一区二区在线| 国产精品美女久久福利网站| 伦理电影国产精品| 精品高清美女精品国产区| 国自产拍在线网站网址视频| 91精品国产综合久久久久久| 免费电影网站在线视频观看福利| 亚洲欧美一区二区激情| 成人涩涩网站| av蓝导航精品导航| 久久精品99国产精品日本| 一卡二卡三卡视频| 国产精品色哟哟| 男女污污视频在线观看| 日韩一区二区精品| 青娱乐极品盛宴一区二区| 午夜欧美不卡精品aaaaa| 欧美mv日韩| 五月天男人天堂| 成人欧美一区二区三区小说 | 欧美一级黄色录像| 美女扒开腿让男人桶爽久久软| 搡老女人一区二区三区视频tv| 成人h动漫免费观看网站| 91欧美精品午夜性色福利在线| 亚洲制服av| 欧美视频在线观看视频| 有码一区二区三区| 在线中文字幕视频观看| 欧美福利视频在线观看| 欧美日韩1区2区3区| 国产午夜福利在线播放| 欧美日韩国产区| 黄色在线网站噜噜噜| 欧美一级黑人aaaaaaa做受| 亚洲精品美女| 蜜臀av性久久久久蜜臀av| 樱桃国产成人精品视频| 污视频免费在线观看| 国内精品久久久久影院 日本资源| 亚洲第一黄网| 亚洲天堂av线| 欧美mv日韩mv国产网站app| 欧美调教在线| 99re6这里有精品热视频| 狠狠操狠狠色综合网| 亚洲免费一区| 欧美久久久久久久| 一区二区三区四区高清精品免费观看| av在线不卡免费| 成人一区二区电影| 91在线观看免费视频| 欧美韩日亚洲| 精品国产三级a在线观看| 裤袜国产欧美精品一区| 欧美福利在线观看| 久久精品国产成人一区二区三区 | 日日噜噜噜夜夜爽亚洲精品| 狠狠综合久久| 欧美日韩一区二区三区69堂| 日韩精品久久久久久福利| 国产精品国产三级国产在线观看 | 青青草视频在线免费观看| 中文欧美日本在线资源| 亚洲狠狠婷婷| 95影院理论片在线观看| 久久91亚洲精品中文字幕| 久久国产视频网| 黄网站在线免费看| 亚洲iv一区二区三区| 亚洲日本在线观看| 中文字幕日本一区| 亚洲在线观看一区| 欧美人妇做爰xxxⅹ性高电影 | 日韩中文字幕久久| 日本欧美加勒比视频| 国产精品影院在线| 国产精品欧美久久久| 中文字幕不卡一区| 四虎影视精品永久在线观看| 精品国产一区二区三区在线| 日韩精品一区国产麻豆| 一区二区毛片| 在线激情小视频| 亚洲一区精品电影| 高跟丝袜一区二区三区| 欧美精选一区二区三区| 国产a级网站| 国产mv久久久| 国产精品理论片在线观看| 麻豆久久一区| 女人喷潮完整视频| 久久久999国产| 2欧美一区二区三区在线观看视频| 二区三区不卡| 免费人成自慰网站| 色青青草原桃花久久综合| 成人精品国产一区二区4080| 依依综合在线| 亚洲色成人www永久在线观看| 亚洲天堂久久av| av一二三不卡影片| 在线综合色站| 免费成人高清| 成人精品在线观看| 欧美在线免费观看亚洲| 亚洲永久在线| 新版的欧美在线视频| 国产真实老熟女无套内射| 色偷偷av亚洲男人的天堂| zzijzzij亚洲日本少妇熟睡| 欧美h版在线观看| 成视频在线观看免费观看| 国产精品亚洲一区二区三区| 精品久久久久久中文字幕大豆网| 亚洲国产精品91| 神马午夜伦理不卡| 亚洲精品无码国产| 久久免费视频网站| 日韩欧美一区二区三区| 亚洲欧美网站| 欧亚一区二区| mm1313亚洲国产精品无码试看| 欧美最顶级丰满的aⅴ艳星| 欧美视频免费在线| 麻豆传媒一区二区三区| 精品国产亚洲一区二区三区| 国产真实伦在线观看| 国产传媒欧美日韩| 亚洲欧美日韩精品久久奇米色影视| 久久精品夜色噜噜亚洲a∨| 欧美www视频在线观看| 欧美hdxxx| 国产九九在线观看| 国产免费一区二区| 一区三区二区视频| 亚洲国产日韩在线一区模特| 久久都是精品| 国产精品一区二区精品视频观看| 97影视大全免费追剧大全在线观看| 精品国产乱码久久久久久108| 亚洲欧美日韩天堂| 亚洲精品视频在线观看网站| 久久久xxx| 猛男gaygay欧美视频| 婷婷在线播放| 国产一二区视频| 亚洲人成网站在线观看播放| 久久久亚洲网站| 欧美二区在线观看| 久久新电视剧免费观看| 亚洲一本视频| 日韩三区四区| 日本中文字幕在线2020| 少妇激情一区二区三区| 久99久在线| 欧美极品美女电影一区| 欧美三区免费完整视频在线观看| 成人短视频下载| 影音先锋久久资源网| 超碰成人福利| 在线能看的av网址|