小知识集锦【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各种技术干货或碎片化知识,以及整理老司机日常工作中踩过的坑涉及到的经验知识为主,也会不定期将正在学习使用的新技术总结出来进行分享。每天一点干货小知识把你的碎片时间充分利用起来。

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