小知識集錦【2】

常言說,
“不積跬步,無以至千里;不積細流,無以成江海”;
又道是,
“積少成多,聚沙成塔”,“千尺樓臺,起於累土”
只有在數的積累後,才能會有量的飛躍,讓我們從小事,從少做起。

繼續總結本司機在工作過程中涉及到的一些小知識點或小的技巧,其中有代碼片段,也有知識點,經驗總結和分享。

1、關閉Log功能

在日常調試程序時,我們經常使用到Log.v(),Log.i(),Log.w(),Log.v(),Log.e()等函數來打Log,而在正式發佈版本時,我們又希望將其關閉掉。可以通過修改proguard混淆文件來達到動態配置的目的。
添加assumenosideeffects即可。assumenosideeffects的官方解釋:

In the optimization step, ProGuard will then remove calls to such methods, if it can determine that the return values aren’t used.ProGuard will analyze your program code to find such methods automatically.It will not analyze library code, for which this option can therefore be useful.
In general, making assumptions can be dangerous; you can easily break the processed code. Only use this option if you know what you’re doing!

方法如下所示,將其添加到proguard文件中即可。

-assumenosideeffects class android.util.Log {
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}

2、mavenCenter和JCenter

一般Gradle都是通過maven中央倉庫和JCenter來獲取構件的,這兩者有何區別?
maven中央倉庫(http://repo1.maven.org/maven2/)是由Sonatype公司提供的服務,它是Apache Maven、SBT和其他構建系統的默認倉庫,並能很容易被Apache Ant/Ivy、Gradle和其他工具所使用。開源組織例如Apache軟件基金會、Eclipse基金會、JBoss和很多個人開源項目都將構件發佈到maven中央倉庫。
JCenter是Goovy Grape內的默認倉庫,Gradle內建支持jcenter()倉庫,項目庫打包成aar文件類似jar,只是多了res,lib文件的包,上傳到JCenter後,可以很方面的在本地調用庫文件,相比於mavenCenter它的構件更多,性能也更好。但還是有些構件僅存在mavenCenter中,而在JCenter中沒有。

3、Android中使用利用adb命令來修改文件

由於某些原因,可能需要手機上的文件,如果手機root過,則很容易修改,方法如下(以修改/system/bin下面的文件爲例):

(1)、首先獲得root權限:adb root

(2)、設置/system爲可讀寫:adb remount

(3)、將hosts文件複製到PC:adb pull /system/bin/xxx.so f://test/xxx.so

(4)、修改PC機上文件,重新打包成yyy.so;

(5)、將PC機上文件複製到手機:adb push f://test/yyy.so /system/etc/hosts

4、一些名詞縮寫含義

  • ISDN Integrated Services Digital Network(數字網絡綜合服務)
  • CLIR Calling Line Identification Restriction(主叫線路識別限制)
  • PLMN Public Land Mobile Network(國際移動通訊電話網絡網絡)
  • HPLMN Home Public Land Mobile Network(國內移動通訊電話網絡)
  • MS Mobile Station(移動電話)
  • FM Frequency Modulation(調頻)
  • IMSI Internation Mobile Subscriber Identity(通用手機特定識別副)
  • PIN Personal Identification Number(pin碼)
  • MO Mobile Originated(電話呼出)
  • MT Mobile Terminated(電話呼入)
  • SIM Subscriber Identigication Module(用戶身份識別卡)
  • STK SIM tools KIT(STK)
  • CSD Circuit Switched Data(電路交換數據)
  • GPRS General Pachet Radip Service(通用分組無線服務技術)
  • WAP Wireless Aplication Protocol(無線應用協議)
  • CB Cell Broadcast(小區廣播)
  • APN Access Point Name(存取)
  • PDP Packet Data Protocol(數據包協議)
  • BAOC Barring of All outgoing Calls supplementary service(禁止所有呼出)
  • USSD Unstructured(未組織的) Supplementary(附助的) Service Date(網絡錢包)
  • PSTN Public Switched Telephone Network(座機、固定電話)

5、電子書一般都包含哪些格式的文件

(1)、txt純文本。
優點是體積小,適用於絕大多數設備。缺點是不支持圖片、不支持封面、不支持超鏈接。

(2)、chm。
比txt要好一些,可以分章節和加超鏈接,但是缺點是相對其它電子書格式,體積較大,並且依舊不支持很多東西。

(3)、pdf。Adobe開發的格式,排版效果較好,適合用於複雜排版的電子刊物。缺點是在小屏上體驗很差。

(4)、mobi。
mobi能流行使用主要推手是Amazon,它和下面介紹的EPUB格式可以傻瓜式互轉,它的發展很大程度上依靠Amazon。

(5)、EPUB。
重點說一下,EPUB(Electronic Publication 的縮寫,電子出版)是一種電子圖書標準,由國際數字出版論壇提出;其中包括 3 種文件格式標準(文件的附文件名爲 .epub),這個格式已取代了先前的 Open eBook 開放電子書標準。epub 格式對於複雜的排版,圖表,公式等元素的兼容性比 mobi 格式好很多,在腳本,公式,矢量圖形的支持方面也強過 mobi 格式,現階段 epub 格式的優勢體現在圖文混排、圖片嵌入字體等,未來可預測的優勢是 epub 格式對於聲音,影像等多媒體內容互動的支持上。

(6)、azw, azw3。azw是 mobi 的另一種形式,也可以理解爲 mobi 加了個殼。
azw3 的本質是 KF8,是隨着 2011 年 Amazon 推出 Kindle Fire平板時一起推出的。它填補了 Mobi 對於複雜排版支持的缺陷,支持很多 HTML5和 CSS3 的語法,這就大大改善了原來 mobi 或 azw 內容排版上的一些缺陷,單純從閱讀排版的角度來講,是不輸 epub 格式的,azw3正逐漸取代 mobi 成爲Amazon Kindle 電子書的主流格式。

(7)、還有其它一些非主流的格式,如jar(比較老的格式),prc(palm上的電子書格式,也出現在Kindle等閱讀器上),Djvu(一種高清掃描文件格式),Caj(特定格式特定閱讀器才能打開),PDG(超星設計的電子書標準,用超星閱讀器才能打開)就做過多介紹了,有興趣的可以自己去搜索。

6、說點別的話題,關於理財

所謂理財,就是指將資金做出最明智的安排和運用,使金錢產生最高的效率和效用。
全球“股神”巴菲特曾有一句名言:如果一隻股票你不打算持有10年,那麼你最好連十分鐘都不要拿。我國基金髮展的歷史同樣證明了基金是長期理財的有效工具,而不是短期投機炒作的發財工具,基金只有長期持有,不錯過收益率最高的交易日,才能獲得可觀收益。我們在投資基金之前都應該設置一個投資目標,如果達到目標收益率,可以贖回基金。不過,從整個市場行情來看,股票市場總體上處於一個上升的行情中,就可以考慮繼續持有它。假若你投資的基金是爲未來做準備,比如以後子女的教育或者養老的,你就沒有必要在基金賺錢後賣了它,應選擇繼續持有。

7、什麼是DTMF?

DTMF( Dual Tone Multi-Frequency ):雙音多頻。用在通話過程中用戶輸入按鍵。
DTMF編解碼器在編碼時將擊鍵或數字信息轉換成雙音信號併發送,解碼時在收到的DTMF信號中檢測擊鍵或數字信息的存在性。
一個DTMF信號由兩個頻率的音頻信號疊加構成。這兩個音頻信號的頻率來自兩組預分配的頻率組:行頻組或列頻組。
每一對這樣的音頻信號唯一表示一個數字或符號。電話機中通常有16個按鍵,其中有10個數字鍵0~9和6個功能鍵*、#、A、B、C、D。
由於按照組合原理,一般應有8種不同的單音頻信號。因此可採用的頻率也有8種,故稱之爲多頻,又因它採用從8種頻率中任意抽出2種進行組合來進行編碼,所以又稱之爲“8中取2”的編碼技術。根據CCITT的建議,國際上採用的多種頻率爲687Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz和1633Hz等8種。用這8種頻率可形成16種不同的組合,從而代表16種不同的數字或功能鍵。

8、invalidate()和postInvalidate()區別

invalidate()方法會導致整個View都無效,然後系統會立刻回調onDraw()方法進行重繪,且該方法必須在主線程中調用。如果在子線程中調用,我們通常的做法是使用Thread+Handler發送消息的方式來調用,確保invalidate()在主線程中執行。
而postInvalidate()可以直接在子Thread中使用,它會延遲導致回調函數onDraw()的執行,這就是兩者的區別。需要注意的是,如果是在View中調用這兩個方法那麼會導致該View被繪製,而其它視圖不會被繪製;如果是在ViewGroup中調用這兩個方法那麼會導致該ViewGroup下的所有子視圖重繪。

這裏寫圖片描述
本公衆號將以推送Android各種技術乾貨或碎片化知識,以及整理老司機日常工作中踩過的坑涉及到的經驗知識爲主,也會不定期將正在學習使用的新技術總結出來進行分享。每天一點乾貨小知識把你的碎片時間充分利用起來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章