先介绍和handler一起工作的几个组件 Handler的方法介绍 代码示例 package liu.peng.weather; import java.util.Timer; import java.util.TimerTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v7.app.ActionBarActivity; impo…
Handler MessageQueue Looper消息循环原理分析   Handler概述 Handler在Android开发中非常重要,最常见的使用场景就是在子线程需要更新UI,用Handler来投递消息到主线程执行UI更新操作.因为Android系统的View是非线程安全的,所以需要在主线程更新UI.总的来说Handler就是用来做线程间通信,在不同线程之间传递消息.注:这篇文章所讲到的Handler是在主线程创建的,主线程在开始的时候已经创建了默认的消息循环.后面的文章会讲如何创建自己…
原文:[置顶] Android菜鸟的成长笔记(12)——Handler.Loop.MessageQueue 当一个程序第一次启动时,Android会启动一条主线程(Main Thread),主线程主要负责处理与UI相关的事件,如按键事件.触屏事件.绘图事件,主线程也被称为UI线程. UI的操作只能是通过主线程来操作,为了解决多线程操作UI的问题,就用到了Handler类. 一.Handler类 Handler类的作用有两个: 1.在新启动的线程中发送消息. 2.在主线程中获取.处理消息. 例如:…
Android Studio 2.3 API 25 从源码角度分析Handler机制.有利于使用Handler和分析Handler的相关问题. Handler 简介 一个Handler允许发送和处理Message,通过关联线程的 MessageQueue 执行 Runnable 对象. 每个Handler实例都和一个单独的线程及其消息队列绑定. 可以将一个任务切换到Handler所在的线程中去执行.一个用法就是子线程通过Handler更新UI. 主要有2种用法: 做出计划,在未来某个时间点执行消…
最近在学习Android多线程相关知识的源码,现在把自己的笔记整理一下,写出来加深印象. Android多线程通讯的核心是handler.looper.message.messageQueue,这篇文章就先记录下这套系统的源码要点,具体的实现方法下一篇文章再写. 内容为自己看源码的理解,如有问题,欢迎留言探讨,共同进步. Thread 用法一: handler = new Handler() { @Override public void handleMessage(Message msg) {…
前言 做过 Android 开发的童鞋都知道,不能在非主线程修改 UI 控件,因为 Android 规定只能在主线程中访问 UI ,如果在子线程中访问 UI ,那么程序就会抛出异常 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy . 并且,Android 也不建议在 UI 线程既主线程中做一些耗时操作,否则会导致程序 A…
Handler . Looper .Message 这三者都与Android异步消息处理线程相关的概念. 那么什么叫异步消息处理线程呢? 异步消息处理线程启动后会进入一个无限的循环体之中,每循环一次,从其内部的消息队列中取出一个消息,然后回调相应的消息处理函数,执行完成一个消息后则继续循环.若消息队列为空,线程则会阻塞等待.       详细总结::: 前提,主线程ui,只能刷新页面和处理事件:耗时的数据处理都在子线程中... 那么子线程的数据如何同步到主线程? 那就需要异步消息处理机制Hand…
提到Android里的消息机制,便会提到Message.Handler.Looper.MessageQueue这四个类,我先简单介绍以下这4个类 之间的爱恨情仇. Message 消息的封装类,里边存储了消息的详细信息,以及要传递的数据 Handler 主要用在消息的发送上,有即时消息,有延迟消息,内部还提供了享元模式封装了消息对象池,能够有效的减少重复对象的创建,留更多的内存做其他的事, Looper 这个类内部持有一个MessageQueue对象,当创建Looper的时候,同时也会创建一个M…
AsyncTask 适用于单线程任务处理,多任务处理还是 Message/Handler 处理方便一些 主要使用方式: 1,创建子类继承自 Handler 类,覆盖 handleMessage(Message) 方法,switch Message 对象的 what(int 类型) 域等携带的信息,用于在 UI 线程中进行对应的操作: 2,new 一个 Handler 对象,并保存,之后发送 Message 对象会用到: 3,子线程中进行耗时操作,完成后 new 一个 Message 对象,设置…
线程通讯问题 (主要用到了Handler类,Looper类和Message类以及MessageQueue) 在Android中主线程如何向子线程中发送消息的问题.让我们来想想,这其中的过程,无非就是创建一个Handler对象,然后一个线程发消息,另一个接收消息嘛.下面是接下来需要涉及到的几个重要类.我们可以把它们想象成以下几个内容. 信息队列管家(Looper): 消息队列(MessageQueue): 消息(Message):可以多个: 信息工人(Handler):可以多个: 下面主要介绍下这…
上周末,滴滴与360都开源了各自的插件化框架,VirtualAPK与RePlugin,作为一个插件化方面的狂热研究者,在周末就迫不及待的下载了Virtualapk框架来进行研究,本篇博客带来的是VirtualAPK原理解析的第一篇Activity管理,博客只是自己的理解,小弟才疏学浅,可能有很多理解不对的地方,欢迎各位大神指出.(看博客之前,请大家先下载VirtualVirtualAPKapk的项目,https://github.com/didi/VirtualAPK) Hook Activit…
RocketMQ架构原理解析(一):整体架构 RocketMQ架构原理解析(二):消息存储(CommitLog) RocketMQ架构原理解析(三):消息索引(ConsumeQueue & IndexFile) RocketMQ架构原理解析(四):消息生产端(Producer) 一.概述 如果你曾经使用过RocketMQ,那么一定对以下发送消息的代码不陌生 DefaultMQProducer producer = new DefaultMQProducer("producerGroup&…
Docker特性与原理解析 文章假设你已经熟悉了Docker的基本命令和基本知识 首先看看Docker提供了哪些特性: 交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell 文件系统隔离:每个进程容器运行在完全独立的根文件系统里 写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间 资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源 网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己…
Volley 实现原理解析 转自:http://blog.csdn.net/fengqiaoyebo2008/article/details/42963915 1. 功能介绍 1.1. Volley Volley 是 Google 推出的 Android 异步网络请求框架和图片加载框架.在 Google I/O 2013 大会上发布. 名字由来:a burst or emission of many things or a large amount at once发布演讲时候的配图 从名字由来和…
前言 Nginx 作为高性能的 http 服务器,知名度不必多言,相似产品中无出其右.本篇随笔记录我认为较为重要的原理和配置. 1. 原理解析 1.1 结构 以上是 Nginx 的结构图,其包含一个 master 和 n 个 worker,master_processes 用于外部通信和统一管理其下 worker_processes ,因此可以做到重启时不中断服务.另外,Nginx 采用了异步非阻塞的方式来处理请求,避免了 cpu 闲置,这是其高性能的主要原由. 1.2 模块 Nginx 从功能…
Spark Shuffle原理解析 一:到底什么是Shuffle? Shuffle中文翻译为“洗牌”,需要Shuffle的关键性原因是某种具有共同特征的数据需要最终汇聚到一个计算节点上进行计算. 二:Shuffle可能面临的问题?运行Task的时候才会产生Shuffle(Shuffle已经融化在Spark的算子中了). 1, 数据量非常大: 2, 数据如何分类,即如何Partition,Hash.Sort.钨丝计算: 3, 负载均衡(数据倾斜): 4, 网络传输效率,需要在压缩和解压缩之间做出权…
Apache和Nginx运行原理解析 原文:https://www.server110.com/nginx/201402/6543.html Web服务器 Web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务. 应用层使用HTTP协议. HTML文档格式. 浏览器统一资源定位器(URL). Web服务器常常以B/S(Browser/Server)方式提供服务.浏览器和服务器的交互方式如下: GET /index.php HTTP/1.1 +-------…
在聊ulua.tolua之前,我们先来看看Unity热更新相关知识. 什么是热更新 举例来说: 游戏上线后,玩家下载第一个版本(70M左右或者更大),在运营的过程中,如果需要更换UI显示,或者修改游戏的逻辑,这个时候,如果不使用热更新,就需要重新打包,然后让玩家重新下载(浪费流量和时间,体验不好). 热更新可以在不重新下载客户端的情况下,更新游戏的内容. 热更新一般应用在手机网游上. 为什么要用lua做热更新 其实C#本身的反射机制可以实现热更新,但是在ios平台上: System.Reflec…
PullToRefresh原理解析,pulltorefresh解析 代码届有一句非常经典的话:"不要重复制造轮子",多少人看过之后便以此为本,把鲁迅的"拿来主义"发扬光大,只搜轮子,不造轮子.但现在我想补充的一句是"不要重复制造轮子,不等于不需要知道轮子是如何制造的"! 读过PullToRefresh的源码之后,我便依照着做了一个小Demo出来,下面就此原理为大家解析一番.究竟是哪句代码实现了如此强大的功能,究竟是哪个方法是贯穿全文上下? 原理:…
1:SpringMVC运行原理 2:工作流程 (1)客户端(浏览器)发送请求,直接请求到DispatcherServlet. (2)DispatcherServlet根据请求信息调用HandlerMapping,解析请求对应的Handler. (3)解析到对应的Handler后,开始由HandlerAdapter适配器处理. (4)HandlerAdapter会根据Handler来调用真正的处理器开处理请求,并处理相应的业务逻辑. (5)处理器处理完业务后,会返回一个ModelAndView对象…
Nginx原理解析 一.反向代理 工作流程 用户通过域名发出访问Web服务器的请求,该域名被DNS服务器解析为反向代理服务器的IP地址: 反向代理服务器接受用户的请求: 反向代理服务器在本地缓存中查找请求的内容,找到后直接把内容发送给用户: 如果本地缓存里没有用户所请求的信息内容,反向代理服务器会代替用户向源服务器请求同样的信息内容,并把信息内容发给用户,如果信息内容是缓存的还会把它保存到缓存中. 优点 保护了真实的web服务器,保证了web服务器的资源安全 通常的代理服务器,只用于代理内部网络…
两张图读懂kafka应用: Kafka 中的术语 broker:中间的kafka cluster,存储消息,是由多个server组成的集群. topic:kafka给消息提供的分类方式.broker用来存储不同topic的消息数据. producer:往broker中某个topic里面生产数据. consumer:从broker中某个topic获取数据. Kafka 中的术语设计: 1.Broker 中间的kafka cluster,存储消息,是由多个server组成的集群. 2.topic与消…
CS-LogN思维导图:记录CS基础 面试题 开源地址:https://github.com/FISHers6/CS-LogN JUC 分类 线程管理 线程池相关类 Executor.Executors.ExecutorService 常用的线程池:FixedThreadPool.CachedThreadPool.ScheduledThreadPool.SingleThreadExecutor 能获取子线程的运行结果 Callable.Future.FutureTask 并发流程管理 Count…
jdk线程池ThreadPoolExecutor工作原理解析(自己动手实现线程池)(一) 线程池介绍 在日常开发中经常会遇到需要使用其它线程将大量任务异步处理的场景(异步化以及提升系统的吞吐量),而在使用线程的过程中却存在着两个痛点. 在java等很多主流语言中每个逻辑上的线程底层都对应着一个系统线程(不考虑虚拟线程的情况).操作系统创建一个新线程是存在一定开销的, 在需要执行大量的异步任务时,如果处理每个任务时都直接向系统申请创建一个线程来执行,并在任务执行完毕后再回收线程,则创建/销毁大量线…
本文地址 原文地址 分享提纲: 0. 引子 1. 感性认识GeoHash 2. GeoHash算法的步骤 3. GeoHash Base32编码长度与精度 4. GeoHash算法 5. 使用注意点(曲线突变--8个邻居来解决) 6. geohash的php .python.java.C#实现代码 7. 参考资料 引子 机机是个好动又好学的孩子,平日里就喜欢拿着手机地图点点按按来查询一些好玩的东西.某一天机机到北海公园游玩,肚肚饿了,于是乎打开手机地图,搜索北海公园附近的餐馆,并选了其中一家用餐…
前言 上一节我们详细讲解了过滤器的创建过程以及粗略的介绍了五种过滤器,用此五种过滤器对实现对执行Action方法各个时期的拦截非常重要.这一节我们简单将讲述在Action方法上.控制器上.全局上以及授权上的自定义特性的执行过程. APiController 之前有讲到该APiController,也就稍微介绍了,这节我们来详细此Web API控制器的基类: public abstract class ApiController : IHttpController, IDisposable { /…
前言 Web API的简单流程就是从请求到执行到Action并最终作出响应,但是在这个过程有一把[筛子],那就是过滤器Filter,在从请求到Action这整个流程中使用Filter来进行相应的处理从而作出响应,这对于认证以及授权等是及其重要的,所以说过滤器应用是Web API框架中非常重要的一种实现方式,我们有必要去探讨其原理. 过滤器及其提供机制 Web API框架提供了一个请求.响应的消息处理管道,并且其框架极具扩展性,通过其扩展可以对执行的流程进行适当的干预,其扩展点就体现在以下三个方面…
GeoHash 核心原理解析       引子 一提到索引,大家脑子里马上浮现出B树索引,因为大量的数据库(如MySQL.oracle.PostgreSQL等)都在使用B树.B树索引本质上是对索引字段进行排序,然后通过类似二分查找的方法进行快速查找,即它要求索引的字段是可排序的,一般而言,可排序的是一维字段,比如时间.年龄.薪水等等.但是对于空间上的一个点(二维,包括经度和纬度),如何排序呢?又如何索引呢?解决的方法很多,下文介绍一种方法来解决这一问题.   思想:如果能通过某种方法将二维的点数…
alibaba-dexposed 原理解析 使用参考地址: http://blog.csdn.net/qxs965266509/article/details/49821413 原理参考地址: http://blog.csdn.net/qxs965266509/article/details/50117137…
支付宝Andfix 原理解析 使用参考地址: http://blog.csdn.net/qxs965266509/article/details/49802429 原理参考地址: http://blog.csdn.net/qxs965266509/article/details/49816007…