17 bdmh

尚未进行身份认证

多年从事软件开发工作,现在主要从事移动端应用开发

等级
TA的排名 4k+

Android:Parcelable序列化读写过程(Parcel)

Parcelable是为Android量身定制的序列化接口,底层是C的实现,通过内存来操作数据。Android中通过Binder机制传递Parcelable数据。Parcelable是一个接口,需要序列化的对象必须实现这个接口。而具体负责数据组装的是Parcel类。接下来,我们就以Activity间通过Intent传递序列化对象,来看看Parcel的工作过程。整个流程涉及到Activity...

2020-01-14 10:31:04

Java:源码分析—反射(Method、Field)

在上一篇文章Java:源码分析—反射(实例化对象:newInstance)中我们了解了反射进行对象实例化的过程,既然对象有了,我们就要使用它,对于一个对象,我们最常用的就是方法和属性里,所以这一篇我们就来看看反射中的Method和Field。在Class.java文件的代码中,比较常用的关于方法和属性的是getMethods、getDeclaredMethods、getFields、getDe...

2020-01-09 09:54:17

Java:源码分析—反射(实例化对象:newInstance)

今天我们来通过源代码,看看Java中反射是如何工作的。反射,其实在我们日常的编程过程中可能用的并不多,但是第三方的库,这个技术确实应用非常广泛的,包括我们在开发Android应用时,有时为了操作一些不开放的系统属性时,也会用到反射。这里我们将通过分析反射的运行,来看看Class这个类的功能。开始之前,先提到两个静态的整型变量,在java.lang.reflect.Member中。这两个变量...

2020-01-08 13:45:15

“+”真的可以替代StringBuilder吗

最近在头条上看到一篇帖子,说Java8开始,字符串拼接时,“+”会被编译成StringBuilder,所以,字符串的连接操作不用再考虑效率问题了,事实真的是这样吗?要搞明白,还是要看看Java编译后的字节码。先比较这样两段代码。最简单的字符串拼接,一个用“+”,一个用StringBuilder。 public void useOperator(){ String a...

2020-01-03 08:31:05

Android:Volley框架分析(十)—— Cache的运转步骤

在上一节,Cache的主要方法分析完后,我们就看看Volley是如何使用Cache的。1、开启Cache选项request.setShouldCache(true);2、添加Request到队列,Volley先判断是否使用缓存,使用就添加到缓存队列,不使用就添加到工作队列(RequestQueue.class) public <T> Request<T&...

2019-12-30 10:19:07

Android:Volley框架分析(九)—— Cache

目前只要是涉及到网络的框架,基本都要考虑缓存问题,在符合要求的情况下,实现快速响应并且减少网络交互。Volley同样也有一套自己的缓存策略,这一节就来讲讲Volley的缓存实现。因涉及到HTTP的缓存知识,这里只做简单描述,不做重点解释。Volley会把每个请求的信息,存储到本地文件中,文件名是根据url进行运算得到的,所以相同的url会得到相同的文件名。然后配合服务器返回的HTTP缓存信息,...

2019-12-27 14:50:42

Android:Volley框架分析(八)—— ImageRequest

这节我们来看Request的另一个子类ImageReqeust,这个类是用来请求图像资源的。先看看使用方法。(图片实际尺寸1920*1080)构造函数: public ImageRequest(String url, Listener<Bitmap> listener, int maxWidth, int maxHeight, ScaleType scaleType, ...

2019-12-25 14:47:50

Android:Volley框架分析(七)—— Request、StringRequest、JSONRequest

目录RequestStringRequestJsonRequest终于讲到使用Volley过程中,我们直接面对最频繁的一个对象了,那就是Request(请求),你的任何一次请求接口,都要创建一个Request并添加到请求队列中,我们在前端通过Listener回调去接收返回结果。com.android.volley.Request是一个抽象类,我们从这里开始。Request...

2019-12-25 14:41:46

Android:Volley框架分析(六)—— 重试机制(RetryPolicy)

当请求超时,Volley内部会启动重试机制,对超时接口进行多次请求,直到超过此数后,抛出错误信息。先看看,重试请求是在哪里发出来的。回到BasicNetwork的performRequest方法,看代码后半部分的几个catch捕获,其中有几个地方会发出重试的动作。catch (SocketTimeoutException var12) { attemptRetryOnExcep...

2019-12-24 14:57:48

Android:Volley框架分析(五)—— ByteArrayPool

上一节我们讲了请求发出去的整个过程,在BasicNetwork中,我们发现了一个属性。private static int DEFAULT_POOL_SIZE;protected final ByteArrayPool mPool;DEFAULT_POOL_SIZE = 4096;这个ByteArrayPool是做什么的,看名字是一个字节数组的池子,就好像线程池、连接池一样,大...

2019-12-23 13:34:57

Android:Volley框架分析(四)—— BasicNetwork和HurlStack

在前面的文章中,我们提到过,在NetworkDispatcher中传入了BasicNetwork实例,BasicNetwork中又存在HurlStack对象,他们就是负责真正向网络发起请求的部分。Android:Volley框架分析(三)—— Dispatcher中提到了下面的代码,由BasicNetwork对象发起请求。NetworkResponse e = this.mNetw...

2019-12-23 11:22:17

Android:Volley框架分析(三)—— Dispatcher

在Android:Volley框架分析(二)——请求队列中我们讲到队列任务开始后,就会将工作交给Dispatcher,这一节我们来看看Dispatcher是如何工作的。在Queue的start方法中,有两个Dispatcher。一个缓存分发(这里先不做介绍),一个工作队列分发NetworkDispatcher。mDispatchers:这是一个数组,Volley内部用来执行请求也是放到线程...

2019-12-19 15:43:02

Android:Volley框架分析(二)——请求队列

在Android:Volley框架分析(一)——请求准备并发出的操作步骤中,我们了解了一个请求发出去的步骤,这一节我们就来看看请求队列的事。requestQueue.add(request);通过上面的代码,一个请求就被加入到Volley的请求队列,请求将被逐个执行。先来看看请求队列的内部的几个属性。mCurrentRequests:当前这个队列里面所有的请求集合(包括等待中的和...

2019-12-19 14:42:15

Android:Volley框架分析(一)——请求准备并发出的操作步骤

Volley是一个较早出现的网络请求框架,虽然现在已经不在得到官方的维护,但其中的思想还是值得探究一下,直接入题,看看Volley的使用步骤。记得加上网络权限。<uses-permission android:name="android.permission.INTERNET"/>一、创建请求队列。二、创建一个请求三、将请求添加到队列就这样,一个请求就可以执行...

2019-12-19 15:18:14

微信公众号开发(十)——扫描带参数二维码事件

我们通过微信扫码二维码已经是十分频繁的操作了,为了满足用户渠道推广分析和用户帐号绑定等场景的需要,微信公众平台提供了创建带参数二维码的接口,通过产生的ticket,去获取二维码图片。当用户扫描这个二维码时,公众平台就会向你设置的接口推送扫描消息。二维码分为临时二维码和永久二维码,介绍可以参考官方文档。https://developers.weixin.qq.com/doc/offiacco...

2019-12-17 16:32:29

微信公众号开发(九)——用户消息接收

目录文本消息图像消息语音消息视频及小视频消息接收到的数据信息如下,小视频唯一区别就是MsgType=shortvideo地理位置当任何一个微信用户,打开你的公众号,通过键盘输入文字、选择图片等信息发送时,你设置的接口,就会收到对方的信息。这个信息结构大致和被动回复(前面讲的点击菜单回复)类似。文本消息<xml> <ToUse...

2019-12-12 11:16:14

微信公众号开发(八)——关注与取消关注

<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> ...

2019-12-12 10:27:31

微信公众号开发(六)——点击菜单回复音乐

<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime>...

2019-12-11 15:11:35

微信公众号开发(七)——点击菜单回复图文消息

<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> &...

2019-12-11 15:10:13

微信公众号开发(五)——点击菜单回复视频

回复数据格式如下:<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateT...

2019-12-11 15:09:50

查看更多

CSDN身份
  • 论坛版主
  • 博客专家
勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条Blink获赞超过3个即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 红花
    红花
    子板块内专家分月排名榜第一
  • 黄花
    黄花
    子板块内专家分月排名榜第二
  • 蓝花
    蓝花
    子板块内专家分月排名榜第三
  • 金牌
    金牌
    总榜技术专家分月排行榜第一
  • 银牌
    银牌
    总榜技术专家分月排行榜第二
  • 铜牌
    铜牌
    总榜技术专家分月排行榜第三
  • 状元
    状元
    总榜技术专家分年内排名榜第一
  • 进士
    进士
    总榜技术专家分年内排名榜第四
  • 名人
    名人
    名人称号
  • 优秀版主
    优秀版主
    优秀小版主