Ant 简介【下】
Ant 官方各标签参考手册
mail 标签发送邮件
需要预先下载 jar 包
javax.mail-api.jar | mail task with MIME encoding
https://javaee.github.io/javamail/
否则会报错
需要预先下载 jar 包
javax.mail-api.jar | mail task with MIME encoding
https://javaee.github.io/javamail/
否则会报错
要点:如果不是必须, 用系统控件
线程切换需要注意的地方
RxJava 内置的线程调度器的确可以让我们的线程切换得心应手,但其中也有些需要注意的地方。
subscribeOn() 指定的就是发射事件的线程,observerOn() 指定的就是订阅者接收事件的线程。subscribeOn() 只有第一次的有效,其余的会被忽略。observerOn(),下游的线程就会切换一次。RxJava 中,已经内置了很多线程选项供我们选择,例如有:
Schedulers.io() 代表io操作的线程, 通常用于网络,读写文件等 IO 密集型的操作;
Schedulers.computation() 代表CPU计算密集型的操作, 例如需要大量计算的操作;
Schedulers.newThread() 代表一个常规的新线程;
先总结下自定义 View 的步骤:
我把 3 用[]标出了,所以说 3 不一定是必须的,当然了大部分情况下还是需要重写的。
1 | <?xml version="1.0" encoding="utf-8"?> |
format 是值该属性的取值类型:
string, color, demension, integer, enum, reference, float,boolean, fraction, flag;不清楚的可以 google
Configuration
ViewConfiguration
提供了一些自定义控件用到的标准常量, 比如UI超时, 尺寸大小, 滑动距离, 敏感度等等

GestureDetector
简化Touch操作
VelocityTracker
用于跟踪触摸屏事件(比如: Flingling 以及其他手势事件)的速率
1 | mVelocityTracker = VelocityTracker.obtain(); |
mTextView.scrollTo(0, 25)
1 | ViewDragHelper mViewDragHelper = ViewDragHelper.create(context, 1.0f, new ViewDragHelper.Callback(){ |
1 | int specMode = MeasureSpec.getMode(measureSpec); |



最终结果不会影响 UI, 例如将数据缓存到数据库中。
Android 四大组件(整理相关知识点)_Calvert 的博客- CSDN 博客_安卓四大组件 https://blog.csdn.net/xchaha/article/details/80398620
1.【强制】错误码的制定原则:快速溯源、沟通标准化。
说明:错误码想得过于完美和复杂,就像康熙字典的生僻字一样,用词似乎精准,但是字典不容易随身携带且简单易懂。
正例:错误码回答的问题是谁的错?错在哪?
1)错误码必须能够快速知晓错误来源,可快速判断是谁的问题。
2)错误码必须能够进行清晰地比对(代码中容易 equals)。
3)错误码有利于团队快速对错误原因达到一致认知。
2.【强制】错误码不体现版本号和错误等级信息。
说明:错误码以不断追加的方式进行兼容。错误等级由日志和错误码本身的释义来决定。
3.【强制】全部正常,但不得不填充错误码时返回五个零:00000。
4.【强制】错误码为字符串类型,共 5 位,分成两个部分:错误产生来源 + 四位数字编号。
说明:错误产生来源分为 A/B/C,A 表示错误来源于用户,比如参数错误,用户安装版本过低,用户支付超时等问题;
B 表示错误来源于当前系统,往往是业务逻辑出错,或程序健壮性差等问题;C 表示错误来源于第三方服务,比如 CDN 服务出错,消息投递超时等问题;四位数字编号从 0001 到 9999,大类之间的步长间距预留 100,参考文末附表 3。