![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android进阶
文章平均质量分 82
this.
这个作者很懒,什么都没留下…
展开
-
Android触屏分发机制(二)
在上一篇博客中讲到了Button的点击事件处理,即View的点击事件是如何分发的,那么这篇文章更深入的理解触屏分发机制,讲述ViewGroup是如何实现的。大家可能都知道各种布局如RelativeLayout,LinearLayout都是继承自ViewGroup,简单来说它是View的集合,就像一个RelativeLayout包含了许多控件一样。其关系如图所示。 关于ViewGroup和Vie原创 2016-03-25 14:32:10 · 815 阅读 · 0 评论 -
关于WindowManager在Android N和Android N以下表现差异的分析总结
1. 问题描述通过WindowManager往窗口里添加浮动按钮,在Android7.0时该按钮可以全局保留,直至进程被杀掉。而Android7.0以下(以Android4.4为例)浮动按钮随Activity的onStop()方法被覆盖。 以下为浮动按钮的实现代码:WindowManager mWm = (WindowManager)mContext.getSystemService(Contex原创 2017-07-12 12:58:14 · 1114 阅读 · 0 评论 -
深入分析HTTP与HTTPS
在详细探究HTTP与HTTPS之前,先理清一下HTTP的基本概念: HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目原创 2017-03-22 17:49:04 · 773 阅读 · 0 评论 -
关于OkHttp缓存post请求的问题
现有这样一个要求,使用Retorfit+okhttp需要在有网的时候能够连接服务器,读取相关信息;在没网络断开的时候需要读取Okhttp的缓存来达到离线的效果。 基于上述的需求,可以使用Okhttp的拦截器来实现://设置缓存目录File cacheFile = new File(BaseApplication.getContext().getCacheDir(), "cache");Cach原创 2017-03-01 18:36:56 · 9062 阅读 · 4 评论 -
Volley源码解析
Volley是Google开发的一个网络请求框架,该框架适合进行小而频繁的网络请求。 Volley的使用比较简单,只需几个简单的操作就可以实现发送请求。以StringRequest 为例://创建一个请求队列RequestQueue requestQueue = Volley.newRequestQueue(this); String url = "request_url";原创 2017-02-07 16:33:55 · 363 阅读 · 0 评论 -
从源代码分析Android-Universal-Image-Loader的缓存处理机制
从源代码分析Android-Universal-Image-Loader的缓存处理机制本博客转自http://www.cnblogs.com/kissazi2/p/3931400.html讲到缓存,平时流水线上的码农一定觉得这是一个高大上的东西。看过网上各种讲缓存原理的文章,总感觉那些文章讲的就是玩具,能用吗?这次我将带你一起看过UIL这个国内外大牛都追捧的图片缓存类库的缓转载 2016-12-27 19:30:15 · 337 阅读 · 0 评论 -
简单明了,彻底地理解Binder
你是不是看过很多Binder文章但是还是对Binder没有一个深刻理解?不是那些文章讲得不够好,主要是存在两种情况,一种是讲的深,全C代码~,对我这种专做Java的人来说没有心情往下看;另一种是只讲framework层,Binder驱动并没有具体提,导致我们会用Binder,也大致能说的出一些原理,可并没有一个完整的深刻认知。那么接下来让我们一起学习Binder吧,相信接下来的内容会让你有一定的收转载 2016-11-27 12:45:15 · 443 阅读 · 0 评论 -
浅析View工作原理
View是android os里一个重要的组成部分,在开发过程中我们经常会用到的一些View组件就有TextView,Button,ListView等等。有些组件经过设计后会展示出更好的视觉效果。那么我们会感到疑惑,一个组件肯定不会凭空产生,那么我们在代码使用了这些组件后它们又经历了一个怎样的过程才使得它们能够在屏幕上展示出来呢? 首先,需要知道的是View的绘制流程是从ViewRootImpl这原创 2016-08-12 13:15:44 · 544 阅读 · 0 评论 -
深入线程池
之前在读Java进阶书籍的时候,接触到了关于线程池的使用,但是一直没有进行系统的理解。这篇博客主要是对线程池功能的梳理。 使用线程池来执行任务相对于线程来讲有许多优点: 1.能够重用线程池里的线程,减少创建线程的开销。 2.可以控制线程池中的最大并发数。 3.可以对线程进行简单的管理。线程池的简单使用public class Test { public static void mai原创 2016-10-26 15:42:20 · 374 阅读 · 0 评论 -
使用AIDL跨进程通信
之前对IPC的研究有接触到AIDL,AIDL的作用实际上就是跨进程通信,因为进程间是各自维护着自己的一个内存,当前进程想要访问到其他进程的内存,就可以通过AIDL来实现。 假定现在进程1(服务端)中有一个学生信息的集合,现在要在进程2(客户端)通过学生ID获取到进程1中集合中某个学生的信息。下图为结构图: 首先,需要创建Student类://必须序列化,不然无法传输二进制对象public原创 2016-10-14 19:26:30 · 480 阅读 · 0 评论 -
Android Volley完全解析,带你从源码的角度理解Volley
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17656437经过前三篇文章的学习,Volley的用法我们已经掌握的差不多了,但是对于Volley的工作原理,恐怕有很多朋友还不是很清楚。因此,本篇文章中我们就来一起阅读一下Volley的源码,将它的工作流程整体地梳理一遍。同时,这也是Volley系列的最后一篇文章了。转载 2016-08-13 16:36:20 · 483 阅读 · 0 评论 -
BroadcastReceiver应用
初学Android时对于BroadcastReceiver的认识很浅,基本上是知道有广播这个东西,而没有实际应用过。最近在实践中也感觉BroadcastReceiver的强大,所以需要重新对广播的知识进行一下梳理。 BroadcastReceiver意味“广播接受者”,可以用来接收用户定义的广播或是系统的广播。系统中也存在很多类似的广播机制,比如提醒用户低电量,当电量改变时,会发送一条广播,而接收原创 2016-09-16 14:06:59 · 378 阅读 · 0 评论 -
IPC机制(一)
最近在了解Service时接触到Android IPC,IPC全称是Inter-Process Communication,意思是进程间通信,当然也包括了跨进程通信。要了解IPC,首先需要知道的是Android中开启多进程模式的方式。开启多进程想要在一个应用程序中开启多个进程,在Android中有这一种方法:即在AndroidMenifest.xml中给四大组件指定一个android:process原创 2016-08-24 15:23:42 · 890 阅读 · 0 评论 -
深入探索AsyncTask
关于AsyncTask,相信大家都不陌生。由于Android UI线程的不安全性,所以如果想要在子线程中更新UI,就必须使用异步消息处理的方式。之前研究了Handler的处理机制(http://blog.csdn.net/u010429311/article/details/51288479),对于AsyncTask的理解还是挺有帮助的。在这里,我们继续深入的理解AsnycTask的工作原理。在此之原创 2016-05-01 14:24:00 · 833 阅读 · 0 评论 -
探索Handler机制原理
众所周知,Android是不能在主线程进行耗时操作,否则会抛出ANR(应用程序无响应)异常。于是,我们在程序开发中就会广泛地使用Handler来实现异步消息的处理,如读取网络数据并加载到程序的UI界面中。Handler的运行需要MessegeQueue和Looper的支撑,关于其三者的关系,接下来将通过源码来具体分析。 首先,我们来看一个使用Handler的情况:public class Main原创 2016-04-30 23:03:07 · 1956 阅读 · 0 评论 -
Android任务和返回栈完全解析,细数那些你所不知道的细节
本博客转自:http://blog.csdn.net/guolin_blog/article/details/41087993任务和返回栈一个应用程序当中通常都会包含很多个Activity,每个Activity都应该设计成为一个具有特定的功能,并且可以让用户进行操作的组件。另外,Activity之间还应该是可以相互启动的。比如,一个邮件应用中可能会包含一个用于展示邮件列表的Acti转载 2016-04-03 17:19:38 · 784 阅读 · 0 评论 -
Android触屏分发机制(一)
面试学校工作室HCI时曾被要求写类似知乎的界面逻辑,其中遇到了一个问题就是layout的onTouch和button的onClick冲突,解决的方法便是了解触屏分发机制。这段时间查阅了许多资料,具体了解Android的触屏分发机制是怎么实现的。 按钮的点击事件相信大家闭着眼睛都能写得出来了:btn.setOnClickListener(new View.OnClickListener() {原创 2016-03-25 13:49:25 · 892 阅读 · 0 评论 -
Android 显示原理简介
现在越来越多的应用开始重视流畅度方面的测试,了解Android应用程序是如何在屏幕上显示的则是基础中的基础,就让我们一起看看小小屏幕中大大的学问。这也是我下篇文章——《Android应用流畅度测试分析》的基础。 首先,用一句话来概括一下Android应用程序显示的过程:Android应用程序调用SurfaceFlinger服务把经过测量、布局和绘制后的Surface渲染到显转载 2017-07-12 20:12:37 · 555 阅读 · 0 评论