
Android
文章平均质量分 95
快马夜小刀
这个作者很懒,什么都没留下…
展开
-
Activity看这篇就够了
文章目录什么是Activity?怎么使用Activity?Activity的生命周期任务栈与Activity的启动方式Activity与ContextActivity与WindowActivity与View什么是Activity?怎么使用Activity?Activity的生命周期任务栈与Activity的启动方式Activity与ContextActivity与WindowActivity与View问题?进程与任务栈的关系任务栈与Activity的关系...原创 2021-01-17 19:19:47 · 299 阅读 · 0 评论 -
分辨率,屏幕尺寸,屏幕密度,dp,px,sp
我们在做UI时候经常遇到这几个概念,但是就是不知道他们之间的关系,这篇文章将会解惑。像素:显示图像的基本单元,单位px分辨率:是纵横向上的像素点数,单位是px,比如1920X1080说的是纵向有1920个像素点,横向有1080个像素点。屏幕尺寸:是手机屏幕对角线的长度,单位为英寸。屏幕像素密度:每单位的像素的点数,简称PPI(Pixels Per Inch),单位dpi(Dots Per Inch)。上述的关系为屏幕的像素密度=√(分辨率高² + 分辨率宽²)÷ 屏幕尺寸。例如:...原创 2020-11-24 22:42:57 · 3167 阅读 · 0 评论 -
Activity与Context
文章目录Application与Context关联获取Application对象Activity与Context关联的过程Activity中的ContextActivity与Context的关系图Context是通过装饰者模式来组织的。ContextImp实现了通用的Context接口,也是为Activity和Application提供基础的Context接口。对于装饰者类均有一个mBase...原创 2018-12-03 21:39:10 · 1322 阅读 · 0 评论 -
View的Touch事件分析
文章目录DecorViewTouch事件处理Activity中的Touch事件处理函数PhoneWindow对象superDispatchTouchEventView的Touch事件处理特性View控件的Touch事件处理View的onTouchEventViewGroup控件的Touch事件处理分析来自Android8.1.0源码DecorViewTouch事件处理我们现在先关注View相...原创 2018-12-16 16:01:36 · 298 阅读 · 0 评论 -
UI优化
概述总结来源与Google发布的性能优化的视频 Android Performance Patterns 和 Android Performance Optimizing Apps for Speed and Usability 。对于用户感到卡顿,不流畅的原因有很多,比如Layout层级结构过深,动画过多,界面刷新,等等导致了CPU或者GPU的负担过重,16ms内无法完成一帧的绘制,导致了掉帧...原创 2018-12-16 17:56:45 · 1855 阅读 · 0 评论 -
Retrofit源码解析
文章目录概述Java接口定义构建Retrofit对象生成Java接口对象调用对象的方法获取`Call`PlatformRetrofit的loadServiceMethod方法ServiceMethod获取CallAdapter对象Converter对象循环解析方法注解解析方法参数注解创建ServiceMethod对象创建OKHttpCall对象通过Call进行网络请求结构设计Retrofit和Re...原创 2018-12-18 17:07:37 · 254 阅读 · 0 评论 -
OKHttp3源码分析-流程与结构
文章目录基本用法获取OkHttpClient对象创建Request对象获取Call对象调用`Call`的方法execute方法enqueue方法拦截器基本用法public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");//1. 获取OkHttpClient对象OkH...原创 2019-03-09 11:14:08 · 258 阅读 · 0 评论 -
OkHttp3源码分析-RetryAndFollowUpInterceptor
RetryAndFollowUpInterceptorRetryAndFollowUpInterceptor有两个功能,一个是重试,一个是重定向。如果Call被取消,RetryAndFollowUpInterceptor将抛出异常。我们来一起分析一下。public final class RetryAndFollowUpInterceptor implements Interceptor {...原创 2019-03-12 11:26:18 · 167 阅读 · 0 评论 -
OkHttp3源码分析-BridgeInterceptor
BridgeInterceptorBridgeInterceptor主要用于网络请求的构建,和响应的解析。public final class BridgeInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { ...原创 2019-03-12 11:27:58 · 200 阅读 · 0 评论 -
OkHttp3源码分析-缓存与CacheInterceptor
基本结构CacheInterceptor依赖两个关键类,一个是CacheStrategy,一个是InternalCache。CacheStrategy采用的是简单工厂模式(其实只是抽象工厂的特例),此类用于判定使用缓存,网络还是二者都使用。InternalCache基本不会自己去设置,会使用Cache中的InternalCache的结构,而Cache实际上是通过DiskLruCache实现...原创 2019-03-12 11:42:09 · 509 阅读 · 0 评论 -
OKHttp3源码分析-ConnectionInterceptor
主要的类包含ConnectInterceptor,StreamAllocation,RealConnection,ConnectionPool。我们先分析ConnectionPool,然后分析ConnectionInterceptor。连接池ConnectionPool作用主要是复用Http连接,避免网络连接的时延,以及避免TCP调谐带来的带宽过小的问题。ConnectionPool主要有...原创 2019-03-24 11:51:17 · 361 阅读 · 0 评论 -
Volley源码分析
使用请看http://blog.youkuaiyun.com/wfeii/article/details/73141230介绍什么是Volley Volley是一个HTTP的开源库,目的是让App的网络请求更容易,更迅速。能干什么 Volley一般用于数据量小,而频繁的数据请求。不能干什么 Volley不适合大型的下载或者流操作,在解析的时候会把网络请求的响应保存到内存中,会导致内存使原创 2018-01-30 18:05:42 · 245 阅读 · 0 评论 -
ImageLoader的设计(1) - Android-Universal-Image-Loader
ImageLoader解决的问题分析源码之前我们需要知道ImageLoader为什么要出现,或者说ImageLoader是用来解决什么问题的。总结了一下几点:对于加载网络的图片是比较耗时的,而对于耗时的排序基本是 网络>磁盘>内存,因此我们需要尽量减少对于网络的请求次数,我们可以牺牲磁盘和内存来达到尽量减少网络请求的加载,这就是我们所说的三级缓存,先从内存获取,然后从磁盘获取,最后再从网络获取。所原创 2017-05-21 16:08:02 · 305 阅读 · 0 评论 -
Volley传输网络数据
本文翻译自Transmitting Network Data Using Volley概述Volley是一个HTTP的库,能够让Android Apps的网络请求更容易,更迅速。Vollery在github可以获取到。Volley有以下优点:自动调度网络请求多个并发的网络连接标准的Http cache coherence支持请求优先级取消请求的API,可以取消简单的请求,也可以取消一组网络翻译 2017-06-12 22:42:27 · 334 阅读 · 0 评论 -
应该知道的Android学习资料
对于Android的学习资料真是不少,一堆一堆的,随便一搜都是一大把,但是有几个学习资料真是需要来反复学习,反复学习,反复学习。原创 2017-04-02 11:21:35 · 434 阅读 · 0 评论 -
高效实用Android Studio (一)
快捷键, Live Templates, 代码格式原创 2017-07-19 20:25:58 · 302 阅读 · 0 评论 -
Android Log分析
Android log 分析原创 2017-02-22 21:42:56 · 4328 阅读 · 0 评论 -
Android代码混淆
概述开启混淆设置混淆避免对外接口混淆Parcelable的混淆反射Serializable避免混淆混淆命令Keep相关的命令类规范参考文档概述对于proguard的用途一般有两点,一是缩小包大小,proguard会优化字节码,移除未使用的代码,以及用短名称混淆其余的类、字段和方法,二是安全性,混淆过的代码晦涩难懂。ProGuard对java原创 2018-01-22 14:59:35 · 454 阅读 · 0 评论 -
Android Jetpack之生命周期的处理
目录LifecycleLifecycleOwner实现自定义LifecycleOwnerLifecycle-aware组件的最佳实践使用Lifecycle-aware组件的场景处理stop事件其他资源翻译自https://developer.android.com/topic/libraries/architecture/lifecycle 。Lifecycle-aware相关的组件能做出一些...翻译 2018-09-19 12:33:48 · 752 阅读 · 0 评论 -
Android Jetpack之Lifecycle的源码分析
文章目录LifecycleOwnerFragmentAppCompatActivityLifecycleLifecycleRegistry分析LifecycleRegistry的实现`LifecycleRegistry` 添加观察者`LifecycleRegistry` 事件处理LifecycleObserver实现`FullLifecycleObserver`监听生命周期实现`GenericLi...原创 2018-09-28 18:53:03 · 667 阅读 · 2 评论 -
Handler与Looper
文章目录概述Looperprepare方法loop方法quit方法主线程中的LooperHandlerHandler与Looper关联Hanlder处理消息Handler发送消息sendMessage方法post方法概述先看一个Android中的HandlerThread是如何使用Looper的。public class HandlerThread extends Thread { ...原创 2018-10-31 16:55:46 · 2534 阅读 · 1 评论 -
Handler中的内存泄露
预备文章:Handler与LooperGC可达性实践-内存泄露分析场景1看码识错误1:class Scene1Activity : AppCompatActivity() { private val mHandler = Handler() override fun onCreate(savedInstanceState: Bundle?) { supe...原创 2018-10-31 17:07:55 · 1342 阅读 · 4 评论 -
Android中的智能指针
文章目录对象的维护Android中的智能指针轻量级指针 - LightRefBase强引用,弱引用原理RefBase强引用原理弱引用原理参考资料对象的维护在编程中,维护对象的生命周期的方式有两种方式:可达性算法引用计数算法Java通过可达性管理对象的生命周期GC可达性实践-内存泄露分析。而C++中由于没有GC的机制,通常使用的是引用计数算法。简单的引用计数通常是给对象添加一个引用计...原创 2018-11-02 11:25:08 · 1783 阅读 · 1 评论 -
组件对外接口设计-易用性
示例OKHttp网络请求:FormBody formBody = new FormBody.Builder() .add("pay_fee", String.valueOf(product.getProductPrice())) .add("product_name", String.valueOf(product.getProductName())) ...原创 2018-12-05 15:30:44 · 1614 阅读 · 0 评论 -
GC可达性实践-内存泄露分析
GC可达性原创 2017-03-08 12:45:35 · 2005 阅读 · 0 评论