摘要:谷歌在推出Android5.0的同时推出了一些新控件,Android5.0中最常用的新控件有下面5种。 1. CardView(卡片视图) CardView顾名思义是卡片视图,它继承FrameLayout。它是一个带圆角的背景和阴影FrameLayout。CardView被包装为一种布局,并且经常在
阅读全文
摘要:谷歌在推出Android4.0的同时推出了一些新控件,Android4.0中最常用的新控件有下面5种。 1. Switch的使用 Switch顾名思义,就是开关的意思,有开和关两种状态。 当Switch处于关闭状态时: 当Switch处于打开状态时: 怎么在定义xml中定义Switch androi
阅读全文
摘要:最简单的Activity中的内容大致是这样的: setContentView 一般来说我们设置页面的内容视图是都是通过setContentView方法,那么我们就以2.3源码为例就来看看Activity中的setContentView到底做了什么吧。 我们可以看到,实际上调用的mWindow的set
阅读全文
摘要:ProGuard工作原理简介 ProGuard能够对Java类中的代码进行压缩(Shrink),优化(Optimize),混淆(Obfuscate),预检(Preveirfy)。 1. 压缩(Shrink):在压缩处理这一步中,用于检测和删除没有使用的类,字段,方法和属性。 2. 优化(Optimi
阅读全文
摘要:RemoteViews从字面上看是一种远程视图。RemoteViews具有View的结构,既然是远程View,那么它就可以在其他进程中显示。由于它可以跨进程显示,所以为了能够更新他的界面,RemoteViews提供一组基础的操作用于跨进程更新它的UI。 RemoteViews在Android日常开发
阅读全文
摘要:基于Android 6.0源码, 分析WMS的启动过程。 一. 概述 Surface:代表画布 WMS: 添加window的过程主要功能是添加Surface,管理所有的Surface布局,以及Z轴排序问题; SurfaceFinger: 将Surface按次序混合并显示到物理屏幕上; 1.1 WMS
阅读全文
摘要:1.在SystemServer中启动PackageManagerService.main 2.newPackageManagerService()并添加到ServiceManager中 3.newinstaller(建立installer和installd的socket连接,最终在底层实现insta
阅读全文
摘要:上面类是AmS的全称,另外两大核心功能是WindowManagerService.java和View.java AmS提供的主要功能: AmS中定义了几个重要的数据类,分别用来保存进程(Process)、活动(Activity)和任务(Task) ProcessRecord.java记录的进程的相关
阅读全文
摘要:现象描述 当我们打开京东 app 进入首页,如果当前是没有网络的状态,里面的按钮点击是没有反应的。只有当我们打开网络的情况下,点击按钮才能跳转页面,按照我们一般人写代码的逻辑应该是这个样子: 上面这段代码看似没有任何问题,完全满足京东的网络处理需求,就写一个 if(有网) 跳转到下一个页面,没网就不
阅读全文
摘要:1.增量升级的原理 增量更新的原理就是将本地apk与服务器端最新版本比对,并得到差异包。比如现在的版本是1.1.4,大小是7.2M,新版本是1.1.5.大小是7.3M。我们发现两个版本只有0.1M的差异,这样我们如果采用增量升级生成0.1M左右的差异包,这样用户只需要下载0.1M的差异包进行升级而不
阅读全文
摘要:Android解析ClassLoader(二)Android中的ClassLoader
阅读全文
摘要:文件上传就一个没刻度的进度条在那里转怎么行,本篇带你实现上传进度,为你的进度条添加刻度吧,啥都不说了,重点重写RequestBody,看代码 结果: 0%0%1%1%1%2%2%3%3%3%4%4%4%5%5%6%6%6%7%7%7%8%8%9%9%9%10%10%10%11%11%12%12%12
阅读全文
摘要:HTTP 缓存体系 首先我将 Http 缓存体系分为以下三个部分: 1. 缓存存储策略 用来确定 Http 响应内容是否可以被客户端缓存,以及可以被哪些客户端缓存 这个策略的作用只有一个,用于决定 Http 响应内容是否可缓存到客户端 对于 Cache-Control 头里的 Public、Priv
阅读全文
摘要:1 Cookie、Session 和 Token 都是用来做持久化处理的,目的就是让客户端和服务端相互认识。Http 请求默认是不持久的没有状态的,谁也不认识谁。 2 Cookie: 是存放在客户端的信息,服务器通过响应头 Set-Cookie 字段给客户端,如果 Cookie 已过期一般是会被清楚
阅读全文
摘要:实现这么个功能我们不需要再去继承RecyclerView,只需要去了解ItemTouchHelper这个类即可,接下来我们就去看看都有些什么 ItemTouchHelper.Callback 默认需要实现三个方法: getMovementFlags() 获取Touch的响应方向,包含两个 1.拖动d
阅读全文
摘要:1.先构建WrapRecyclerAdapter 2.构建WrapRecyclerView 我们最好还是模仿ListView的结构搞就搞到西,自定义一个WrapRecyclerView,可以添加删除头部和底部View,这个就比较简单 3.使用:
阅读全文
摘要:猜想: 既然考虑了分割线,那么子View在测量时候肯定要去考虑分割线留出的位置 直接measureChild()方法 猜想: 分割线会调用绘制的方法 onDraw()
阅读全文
摘要:一. 背景 PS:相关知识:ListView与RecyclerView缓存机制原理大致相似,如下图所示: 滑动过程中,离屏的ItemView即被回收至缓存,入屏的ItemView则会优先从缓存中获取,只是ListView与RecyclerView的实现细节有差异.(这只是缓存使用的其中一个场景,还有
阅读全文
摘要:一、应用的启动方式 通常来说,启动方式分为两种:冷启动和热启动。 1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。 2、热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然
阅读全文
摘要:1.概述 大致的流程就是在用户崩溃的时候,我们获取崩溃信息、应用当前的信息和手机信息,然后把它保存到手机内存卡,再找我就直接找出来看看。后来衍生到上线后某些奇葩机型会有部分问题,所以不得不上传到服务器,后来发现居然可以配合热修复一步一步如此神奇,接下来我们来玩一玩,如何才能把用户的崩溃信息上传到服务
阅读全文
摘要:1.1 基本介绍 我们先去github上面了解它https://github.com/alibaba/AndFix 这里就有一个概念那就AndFix.apatch补丁用来修复方法,接下来我们看看到底是怎么实现的。 这里就有一个概念那就AndFix.apatch补丁用来修复方法,接下来我们看看到底是怎
阅读全文
摘要:我们自己来实现一套IOC注解框架吧,采用的方式反射加注解和Xutils类似,但我们尽量不写那么麻烦,也不打算采用动态代理,我们扩展一个检测网络的注解,比如没网的时候我们不去执行方法而是给予没有网络的提示同时也不允许用户反复点击。 这个时候有人就开始喷了,明知道反射会影响性能为什么还要用?这里我就随便
阅读全文