Android 源码研究
程序邦
1. 擅长Android 开发
2. 擅长React Native 跨平台开发
展开
-
Android 7.0 行为变更
Android 7.0 除了提供诸多新特性和功能外,还对系统和 API 行为做出了各种变更。本文重点介绍您应该了解并在开发应用时加以考虑的一些主要变更。如果您之前发布过 Android 应用,请注意您的应用可能受到这些平台变化的影响。电池和内存Android 7.0 包括旨在延长设备电池寿命和减少 RAM 使用的系统行为变更。这些变更可能会影响您的应用访问系统资源,以及您的应用通过特定...翻译 2019-05-29 14:21:10 · 199 阅读 · 0 评论 -
OkHttp 3.7源码分析(三) - 任务队列
前面的博客已经提到过,OkHttp的一个高效之处在于在内部维护了一个线程池,方便高效地执行异步请求。本篇博客将详细介绍OkHttp的任务队列机制。1.线程池的优点OkHttp的任务队列在内部维护了一个线程池用于执行具体的网络请求。而线程池最大的好处在于通过线程复用减少非核心任务的损耗。多线程技术主要解决处理器单元内多个线程执行的问题,它可以显着减少处理器单元的闲置时间,增加转载 2018-01-11 14:44:59 · 404 阅读 · 0 评论 -
OkHttp之拦截器
拦截器是一个非常强大的机制,可以监视,重写和重试call。这里是一个简单的拦截器,用来打印出去的请求和收到的响应。class LoggingInterceptor implements Interceptor { @Override public Response intercept(Interceptor.Chain chain) throws IOException { Requ原创 2017-11-22 16:34:52 · 407 阅读 · 0 评论 -
android二维码识别原理与测试方法
首先看看二维码识别原理:一.我们都是使用二维码生成工具制码,原理对于我们意义并不是很大,这里就不浪费地方复制黏贴了。二维码编码原理请google。二.下面是与本次问题相关的一些经验。1. 同一尺寸同一纠错等级下:二维码的点阵密度和包含的字串长度成正比。即信息含量越大,点阵越密。第2张码点阵就密集的多。2. 同一尺寸同一URL:二维码的点阵密度,和纠错等级成正比。原创 2017-10-20 11:38:39 · 8299 阅读 · 0 评论 -
网络框架 Volley 优缺点
Volley到底有哪些特点呢?自动调度网络请求多个并发的网络连接通过使用标准的HTTP缓存机制保持磁盘和内存响应的一致支持请求优先级支持取消请求的强大API,可以取消单个请求或多个易于定制健壮性:便于正确的更新UI和获取数据包含调试和追踪工具Volley优点可以取消请求容易扩展,面向接口编程网络请求线程NetworkDispatcher默认开启了4个,可以优化,通过手机CP原创 2017-02-05 11:48:35 · 4906 阅读 · 0 评论 -
Android中AIDL的工作原理
转载自:http://www.jianshu.com/p/e0c583ea9289IPC在这之前我们先简单说一下IPC,IPC是Inter-Process Communication的缩写,是进程间通信或者跨进程通信的意思,既然说到进程,大家要区分一下进程和线程,进程一般指的是一个执行单元,它拥有独立的地址空间,也就是一个应用或者一个程序。线程是CPU调度的最小单元,是进程转载 2017-09-21 13:52:47 · 986 阅读 · 0 评论 -
Android源码解析AsyncTask的工作原理
AsyncTask的源码链接https://github.com/android/platform_frameworks_base/blob/master/core/java/android/os/AsyncTask.javaAsyncTask一开始定义了一些字段,如下所示:private static final String LOG_TAG = "AsyncTask";原创 2017-09-11 18:43:01 · 212 阅读 · 0 评论 -
Android 源码详解 Volley超时重试机
Volley超时重试机制基础用法Volley为开发者提供了可配置的超时重试机制,我们在使用时只需要为我们的Request设置自定义的RetryPolicy即可. 参考设置代码如下:int DEFAULT_TIMEOUT_MS = 10000;int DEFAULT_MAX_RETRIES = 3;StringRequest stringRequest = new S原创 2017-09-19 15:27:59 · 716 阅读 · 1 评论 -
从源码出发浅析Android TV的焦点移动原理-下篇
2.2 findNextFocus如果开发者没有指定nextFocusId,则用findNextFocus找指定方向上最近的视图看一下这里的用法focusables.clear();// 2.2.1 找到所有isFocusable的View root.addFocusables(focusables, direction);if (!focusables.isEmpty())原创 2017-08-31 16:53:42 · 621 阅读 · 0 评论 -
Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
转载自:http://blog.csdn.net/guolin_blog/article/details/53939176在本系列的上一篇文章中,我们学习了Glide的基本用法,体验了这个图片加载框架的强大功能,以及它非常简便的API。还没有看过上一篇文章的朋友,建议先去阅读 Android图片加载框架最全解析(一),Glide的基本用法 。在多数情况下,我们想要在界面上加载并转载 2017-09-08 15:13:52 · 377 阅读 · 0 评论 -
OkHttp 3.7源码分析(四)——缓存策略
合理地利用本地缓存可以有效地减少网络开销,减少响应延迟。HTTP报头也定义了很多与缓存有关的域来控制缓存。今天就来讲讲OkHttp中关于缓存部分的实现细节。1. HTTP缓存策略首先来了解下HTTP协议中缓存部分的相关域。1.1 Expires超时时间,一般用在服务器的response报头中用于告知客户端对应资源的过期时间。当客户端需要再次请求相同资源时先比较其过期转载 2018-01-11 14:50:19 · 210 阅读 · 0 评论 -
OkHttp 3.7源码分析(五)——连接池
接下来讲下OkHttp的连接池管理,这也是OkHttp的核心部分。通过维护连接池,最大限度重用现有连接,减少网络连接的创建开销,以此提升网络请求效率。1. 背景1.1 keep-alive机制在HTTP1.0中HTTP的请求流程如下:这种方法的好处是简单,各个请求互不干扰。但在复杂的网络请求场景下这种方式几乎不可用。例如:浏览器加载一个HTML网页,HTML转载 2018-01-11 14:58:43 · 264 阅读 · 0 评论 -
Android 8.0 功能和API -翻译
用户体验通知在 Android 8.0 中,我们已重新设计通知,以便为管理通知行为和设置提供更轻松和更统一的方式。这些变更包括:通知渠道:Android 8.0 引入了通知渠道,其允许您为要显示的每种通知类型创建用户可自定义的渠道。用户界面将通知渠道称之为通知类别。要了解如何实现通知渠道的信息,请参阅通知渠道指南。 通知标志:Android 8.0 引入了对在应用启动器图标上显示通知...翻译 2019-05-28 14:50:41 · 593 阅读 · 0 评论 -
Android 7.0 开发者版本
Android 7.0 Nougat 为用户和开发者引入多种新功能。本文重点介绍面向开发者的新功能。请务必查阅Android 7.0 行为变更以了解平台变更可能影响您的应用的领域。要详细了解 Android 7.0 的消费者功能,请访问www.android.com。多窗口支持在 Android 7.0 中,我们为该平台引入了一个新的而且非常需要的多任务处理功能 — 多窗口支持...翻译 2019-05-30 09:00:35 · 323 阅读 · 0 评论 -
android Apk打包过程概述_android是如何打包apk的
转载自:https://blog.csdn.net/jason0539/article/details/44917745最近看了老罗分析android资源管理和apk打包流程的博客,参考其他一些资料,做了一下整理,脱离繁琐的打包细节和数据结构,从整体上概述了apk打包的整个流程。流程概述:1、打包资源文件,生成R.java文件2、处理aidl文件,生成相应java 文件3、编译工程源代码,生成相应...转载 2018-03-28 17:14:01 · 800 阅读 · 0 评论 -
BlockCanary原理总结
背景在复杂的项目环境中,由于历史代码庞大,业务复杂,包含各种第三方库,偶尔再来个jni调用,所以在出现了卡顿的时候,我们很难定位到底是哪里出现了问题,即便知道是哪一个Activity/Fragment,也仍然需要进去里面一行一行看,动辄数千行的类再加上跳来跳去调来调去的,结果就是不了了之随它去了,实在不行了再优化吧。于是一拖再拖,最后可能压根就改不动了,客户端越来越卡。事实上,很多情况下卡顿不是必...原创 2018-03-27 16:59:05 · 1152 阅读 · 0 评论 -
ANDROID中BROADCASTRECEIVER的两种注册方式(静态和动态)详解
今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式。BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播。在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能;当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出原创 2017-09-06 15:10:08 · 930 阅读 · 0 评论 -
详解Android Handler的使用-别说你不懂handler
我们进行Android开发时,Handler可以说是使用非常频繁的一个概念,它的用处不言而喻。本文就详细介绍Handler的基本概念和用法。 Handler的基本概念 Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处原创 2015-02-06 10:33:20 · 550 阅读 · 0 评论 -
handler机制的原理
andriod提供了Handler 和 Looper 来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。 2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新原创 2015-01-21 10:44:22 · 552 阅读 · 0 评论 -
OkHttp 3.7源码分析(二)——拦截器&一个实际网络请求的实现
转载自:https://yq.aliyun.com/articles/78104?spm=5176.100239.blogcont78105.24.739385aaDJlF2W前一篇博客中我们介绍了OkHttp的总体架构,接下来我们以一个具体的网络请求来讲述OkHttp进行网络访问的具体过程。由于该部分与OkHttp的拦截器概念紧密联系在一起,所以将这两部分放在一起进行讲解。1转载 2018-01-10 17:28:31 · 295 阅读 · 0 评论 -
OkHttp 3.7源码分析(一)——整体架构
转载自:https://yq.aliyun.com/articles/78105?spm=5176.100239.blogcont78104.20.SnYUwEOkHttp是一个处理网络请求的开源项目,是Android端最火热的轻量级框架,由移动支付Square公司贡献用于替代HttpUrlConnection和Apache HttpClient。随着OkHttp的不断成熟,越来越多的转载 2018-01-10 17:26:56 · 343 阅读 · 0 评论 -
Android图片加载框架最全解析(一),Glide的基本用法
转载自:http://blog.csdn.net/guolin_blog/article/details/53759439Glide和Picasso对比呢,首先这两个框架的用法非常相似,但其实它们各有特色。Picasso比Glide更加简洁和轻量,Glide比Picasso功能更为丰富。之前已经有人对这两个框架进行过全方面的对比,大家如果想了解更多的话可以去参考一下 这篇文章 。转载 2017-09-08 14:21:42 · 239 阅读 · 0 评论 -
Android 源码解析 图解 Android 事件分发机制
在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说,总结一句:事件分发机制很重要。Android 事件分发流关于Android 事件分发机制网上的原创 2017-09-15 15:39:41 · 279 阅读 · 0 评论 -
View的工作原理 理解MeasureSpec
View的工作原理 理解MeasureSpec一、1.MesureSpec 测量规格的意思,决定了View的测量过程。2.在测量过程还受父容器的影响3.在测试过程中,系统会将View的LayoutParams根据父容器所施加的规则转换成对应的MesureSpec,然后再根据这个measureSpec来测量出View的宽/高。4.这里的宽/高是测量宽/高,不一定等于View原创 2017-09-15 15:36:57 · 370 阅读 · 0 评论 -
UniversalImageLoader 源码解析 -1.enam(枚举)使用
闲来无事,今天又重新打开了UniversalImageLoader源码,以下简称为UIL。由于前几天做了一个基于SDK开发的项目,也就是给第三开发者用到的一个Library库。所以就打开了UIL源码用到的自己封装的库源码,来看下他们是怎么封装的,要来学习一下。一、先来po一张图。因为UIL库主要作用是用一款图片加载引擎库。所以涉及到图片核心操作代码core包,下载完毕图片一定是原创 2016-11-02 16:31:01 · 348 阅读 · 0 评论 -
Android TouchEvent事件传递机制
转载自:http://blog.csdn.net/morgan_xww/article/details/9372285跟touch事件相关的3个方法:public boolean dispatchTouchEvent(MotionEvent ev); //用来分派eventpublic boolean onInterceptTouchEvent(MotionEvent转载 2015-01-14 13:56:29 · 609 阅读 · 0 评论 -
Android ViewGroup中事件触发和传递机制
针对由于触摸(Touch)而触发的事件。Android的事件:onClick, onScroll, onFling等等,都是由许多个Touch组成的。其中Touch的第一个状态肯定是ACTION_DOWN, 表示按下了屏幕。之后,touch将会有后续事件,可能是: ACTION_MOVE //表示为移动手势 ACTION_UPAndroid的事件:onClick, onScroll, on转载 2015-01-13 09:41:47 · 745 阅读 · 0 评论 -
Android中Service(服务)详解
Service是Android中四大组件之一,在Android开发中起到非常重要的作用,先来看一下官方对Service的定义:A Service is an application component that can perform long-running operations in the background and does not provide a user interfac转载 2015-01-13 10:59:03 · 526 阅读 · 0 评论 -
Android开发学习之TypedArray类
在学习Android的开发中,学习Gallery视图显示图片的过程中,在设置图片适配器的时候,用到了此TypedArray类型,这次根据android SDK,一块把此类型弄清楚!android.content.res.TypedArray包含函数 obtainStyledAttributes(AttributeSet, int[], int, int) 或者 obtainAttr转载 2015-01-12 11:46:27 · 659 阅读 · 0 评论 -
android AsyncTask介绍
AsyncTask和Handler对比1 ) AsyncTask实现的原理,和适用的优缺点AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI进度更新),最后反馈执行的结果给UI主线程.使用的优点:l 简单,快捷l 过程可控 使用的缺点:l原创 2015-02-12 10:47:53 · 434 阅读 · 0 评论 -
Android EventBus实战 没听过你就out了
转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/40794879,本文出自:【张鸿洋的博客】转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/40794879,本文出自:【张鸿洋的博客】1、概述最近大家面试说经常被问到EventBus,git转载 2015-05-07 09:39:54 · 421 阅读 · 0 评论 -
Android 框架炼成 教你如何写组件间通信框架EventBus
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41096639 ,本文出自:【张鸿洋的博客】1、概述关于Eventbus的介绍,前面已经有两篇:Android EventBus实战 没听过你就out了和Android EventBus源码解析 带你深入理解EventBus , 如果你觉得还有问题,没关系,转载 2015-05-07 09:48:27 · 524 阅读 · 0 评论 -
Android EventBus源码解析 带你深入理解EventBus
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/40920453,本文出自:【张鸿洋的博客】上一篇带大家初步了解了EventBus的使用方式,详见:Android EventBus实战 没听过你就out了,本篇博客将解析EventBus的源码,相信能够让大家深入理解该框架的实现,也能解决很多在使用中的疑问:为什么可转载 2015-05-07 09:46:50 · 494 阅读 · 0 评论 -
Android-Universal-Image-Loader 优缺点
一、功能特性:1、多线程异步加载和显示图片(图片来源于网络、sd卡、assets文件夹,drawable文件夹(不能加载9patch),新增加载视频缩略图)[java] view plaincopy"http://site.com/image.png" target="_blank">http://site.com/image.png原创 2017-02-05 11:21:50 · 682 阅读 · 0 评论 -
Glide优势与特点
转载自:http://blog.csdn.net/u013240038/article/details/51474900什么是Glide?Glide是一个加载图片的库,作者是bumptech,它是在泰国举行的google 开发者论坛上google为我们介绍的,这个库被广泛的运用在google的开源项目中。Glide解决什么问题?Glide是一个非常成熟的图片转载 2017-02-05 11:33:07 · 638 阅读 · 0 评论 -
Android 源码总结 AsyncTask
AsyncTask首先从Android3.0开始,系统要求网络访问必须在子线程中进行,否则网络访问将会失败并抛出NetworkOnMainThreadException这个异常,这样做是为了避免主线程由于耗时操作所阻塞从而出现ANR现象。AsyncTask封装了线程池和Handler。AsyncTask有两个线程池:SerialExecutor和THREAD_POOL_EXECUTOR。前原创 2017-09-15 15:21:17 · 226 阅读 · 0 评论 -
onAttachedToWindow()在整个Activity生命周期的位置及使用
onAttachedToWindow在整个Activity的生命周期中占据什么位置?为什么要在onAttachedToWindow中修改窗口尺寸?一、onAttachedToWindow在Activity生命周期中的位置根据之前分析API的套路,看onAttachedToWindow在Android文档中怎样介绍。首先看Window.Callback中关于o原创 2015-02-28 11:23:17 · 1114 阅读 · 0 评论 -
从源码出发浅析Android TV的焦点移动原理-上篇
转载自:https://mp.weixin.qq.com/s?__biz=MzI1NjEwMTM4OA==&mid=2651232390&idx=1&sn=b997e7a784458ffc0ad2b9e8d1cbe545&chksm=f1d9e5e5c6ae6cf3b03f33f3d7d50b3fcf33236fa553f7948db96e53f8a2e7712e09d59b5d8f&mpshar转载 2017-08-31 15:08:53 · 590 阅读 · 0 评论 -
Android 源码解析 Retrofit2 原理
开发Android App肯定会使用Http请求与服务器通信,上传或下载数据等。目前开源的Http请求工具也有很多,比如Google开发的Volley,loopj的Android Async Http,Square开源的OkHttp或者Retrofit等。我觉得Retrofit 无疑是这几个当中最好用的一个,设计这个库的思路很特别而且巧妙。Retrofit的代码很少,花点时间读它的源码肯定原创 2017-06-13 15:55:02 · 1595 阅读 · 0 评论 -
Android 源码分析 ButterKnife框架原理
大部分Android开发应该都知道 @JakeWharton 大神的 ButterKnife 注解库,使用这个库我们可以不用写很多无聊的 findViewById() 和 setOnClickListener() 等代码ButterKnife项目的主页在这里: http://jakewharton.github.io/butterknife/ 简单介绍一下使用方法:public cla原创 2017-06-21 14:20:38 · 305 阅读 · 0 评论