Yong's blog

The only thing we have to fear is fear itself.

分类 Android开发 下的文章

June 21, 2019

移动开发中的IoC思想

在平时的面试或者开发过程中,经常遇到一个词汇:“依赖注入”,这个其实是一个编程的高级用法,跟这个词关联的设计思想就是IoC(Inversion of Control)设计原则。IoC中文名为控制反转,在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制,这就存在控制权的对调,所以称为控制反转。举个形象的栗子:假设我们设计一辆汽车:先设计轮子,然后根据轮子大小设计...
January 7, 2019

Android Studio中R文件报错但可以正常编译

最近在编译项目的过程中,发现R文件不能正常链接,但正常编译可以通过,所有的R文件被标红了,点击会提示 Cannot resolve symbol’R’,但我寻找到R文件的目录,发现R文件确实真实存在,一开始怀疑是公司加密的问题,但后来发现用notepad是可以正常打开R.java文件,所以基本上排除加密问题。通过Google,找了几篇博文,终于找到原因了,原因是Intellij IDEA对单...
July 21, 2018

Android依赖compile、implement和api区别

Android Studio版本更新至3.0后,连带的gradle的版本也升级到3.0以上,再使用compile依赖系统会有提示,告诉你不要在用compile。之前在gradle 3.0以下版本依赖的声明写法是:compile fileTree(dir: 'libs', include: ['*.jar'])但在gradle 3.0后的写法是:implementation fileTree(...
July 12, 2018

在使用Android统一资源定位符file//android_res/ 出现 ClassNotFoundException 的问题分析

最近在一个项目中使用统一资源定位符的时候,出现一个很诡异的问题,同样的代码,同样的资源放在两个不同的项目工程里,有一个工程正常运行,另一个工程运行异常,报ClassNotFoundException,具体问题和原因,我慢慢道来。说一下项目使用的场景,有一个html文件需要国际化,所以把该html文件从assets文件夹移动到raw文件夹,并添加了国际化支持,在其中一个项目中完美运行,经过测试...
May 6, 2018

应用生命周期管理实现

一个问题最近被一个同行大佬问到一个小的技术点难住了,问题很简单。问:如何在所有Activity的OnResume里面打印出来Log?答:可以在所有Activity继承的BaseActivity里面OnResume方法添加打印日志。问:如果有Activity没有继承BaseActivity怎么办?如果有一些SDK里面有第三方的Activity怎么办?答:使用AOP的方式,通过正则匹配,把代码织...
February 8, 2018

LinkTextView-自定义链接颜色和点击事件

前言目前项目中有一个需求,就是在一个完整的TextView中加入超链接功能,而且这个超链接是跳转到指定页面而非系统默认的打开网页或者拨号之类的,于是顺手撸了一个轮子。已实现的功能截图如下:实现通过上图可以发现,需要实现的功能看起来很简单,但通过原生的TextView却很难实现,一开始我是通过工具类对TextView设置SpannableString,在SpannableString中进行着色...
July 27, 2017

EditText密码框兼容性问题

在最近的一个项目中遇到一个很诡异的问题,魅族小米部分手机型号的EditText密码框,当显示英文Hint文字的时候,文字会被莫名其妙的拉长,就像下图这样:图中下面Please enter a password 的文字明显被拉长了,字体样式也发生了改变,本来以为是文字大小问题,但是看代码也设置了相同的文字大小,于是乎考虑是否这些手机在英文语言环境下,检测到样式是密码输入框,就会自动替换文字样式...
June 17, 2017

Android support包冲突

开发过程中往往会引入很多第三方的依赖,这些第三方组件库的质量和内部依赖是良莠不齐的,很多时候为了实现功能的快速开发和迭代,在项目中有可能会使用超过十几个或者几十个依赖库,这些依赖库中难免会存在合并冲突,简单的合并冲突可以通过配置manifest对应的冲突地方添加 "replace" 标签来解决,但是有一类问题是比较棘手的,那就是support包依赖冲突问题。常见合并出错Error:(87, ...
December 17, 2016

基于Java实现的YmodemCRC校验工具

循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误,它是利用除法及余数的原理来作错误侦测的。本文是基于Java语言来实现对Ymodem数据的CRC校验的一种实现,可移植性强,主要针对公司嵌入式软件(或系统)传输到上位机的字节数组进行校验和上位机根据...
November 26, 2016

基于Java实现的ModbusCRC校验工具

循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误,它是利用除法及余数的原理来作错误侦测的。本文是基于Java语言来实现对Modbus数据的CRC校验的一种实现,可移植性强,主要针对公司嵌入式软件(或系统)传输到上位机的字节数组进行校验和上位机根据...