UDP与JavaUDP操作

UDP是什么

  • 全称 User Datagram Protocol
  • 一种用户数据报协议,又称用户数据报文协议
  • 是一个简单的面向数据报的传输层协议,正式规范为RFC 768
  • 用户数据协议、非连接协议

UDP为什么不可靠

  • 它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份
  • UDP在IP数据报的头部,仅仅加入了复用和数据校验(字段)
  • 发送端生产数据,接收端从网络中抓取数据
  • 结构简单、无校验、速度快、容易丢包、可广播

解决Dagger2+DataBinding编译错误提示问题

项目中使用了Dragger2+DataBinding这两个基于Annotation的库,这种库依赖于编译期生成代码来使用。但是他们之间会相互影响,一但一个出错了,会导致Annotation编译时中断。这时Java部分编译检查就会爆出大量的错误,错误原因基本都是DataBinding和Dragger编译期生成的中间类无法找到。这时由于默认编译器只会显示100条错误信息,就会导致我们无法定位到真正的错误位置。

Android自定义Loading提示框

工作需要一个自定义的Loading提示框,那么比起从网络上找第三方库修改,从零做一个Loading更能学到更多的知识,那么我们开始吧。

制作一个旋转的Loading控件

  • 首先需要自定义View来承载动画
  • 创建LoadingView继承自View
  • 初始化画笔和图片资源
1
2
3
4
5
6
7
private void init() {   
paint = new Paint();
//画笔 抗锯齿
paint.setFlags(Paint.ANTI_ALIAS_FLAG);
//图片资源
loadingPic = decodeResource(getResources(), R.drawable.ic_loading);
}

Android应用前后台状态判断

开发中遇到了一个需求,如果应用在非前台的状态超过一定时间,就需要用户重新去登录。如果用户不进行登录,就回到主页。这种类似的需求我在银行类App中见到过。技术点就是如何判断App当前的状态。

但是这里面状态有很多,并不只是前后台。还有App在前台,但是用户锁屏放置的情况,这种情况,也是需要算作用户未使用App的,所以需要判断的状态如下。

应用状态:

  • 从后台切换到前台
  • 从前台切换到后台
  • 用户锁屏
  • 用户解锁手机

总结出需要判断的内容之后,可以开始根据不同状态编写代码了。

关于RecyclerView嵌套ViewPager的问题

解决RecyclerView嵌套ViewPager高度不正常问题

需要解决的问题:

  • ViewPager高度为0
  • ViewPager的高度,需要统一为所有Item中,最高的那个

解决方案:

  • 自定义ViewPager类,并继承ViewPager并覆盖onMeasure方法,手动计算高度
  • 遍历子布局,取得最大高度,并设置为ViewPager高度

webpack-dev-server配置翻车记录

在配置WebpackDevServer后,在开发的过程中,经常出现莫名其妙的内存溢出,最后经过多方排查,发现问题出在webpack的配置文件上。

错误的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//旧配置文件,现作废,原因见下面描述
devServer: {
//基础目录(可选)
//contentBase: './',
//如果需要被外部访问
host: "0.0.0.0",
port: 8989,
//只显示错误提示
stats: "errors-only",
//静态资源路径
publicPath: "/dist/",
//在devServer启动之前执行的方法
after: () => {
console.log('Server Start!');
},
//将默认 /dist/ 路径代理为 / 路径
proxy: {
'/': 'http://0.0.0.0:8989/dist/'
}
}
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×