概述
今天在项目中遇到一个比较磨人的需求,涉及到了ViewPager嵌套ViewPager的滑动问题,写一篇博客来记录下有关于ViewPager嵌套使用的一些坑,以及View的事件的再次学习。
more >>今天在项目中遇到一个比较磨人的需求,涉及到了ViewPager嵌套ViewPager的滑动问题,写一篇博客来记录下有关于ViewPager嵌套使用的一些坑,以及View的事件的再次学习。
more >>在Android中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中,那么不同线程中的Activity和Service如何通信,下面就开始研究这个问题。
more >>DiskLruCache用于实现磁盘缓存,它将缓存对象写入文件系统实现缓存。
由于不是Google官方的,所以需要自己下载,Google source上的源码是有些问题的,推荐去CSDN上下载,地址如下:
http://download.csdn.net/detail/sinyu890807/7709759
下载好源码之后,直接拷进项目中就行了。
more >>接上一篇Android的线程和线程池笔记本篇介绍Android中的线程池
首先是线程池的优点:
Android中的线程池等概念来源于Java中的Executor,Executor是一个接口,真正的线程池的实现为ThreadPoolExecutor,它提供了一系列的参数来配置线程池,从线程池的功能特性来说,Android的线程池主要分为4类,可以通过Executors所提供的工厂方法来得到,它们分别是:
Android中的线程池都是直接或者间接通过配置ThreadPoolExecutor来实现的 ,因此首先来看ThreadPoolExecutor。
more >>记录一下11章Android的线程和线程池的学习过程。
首先看一下Google官方的简述:Low-level class holding the list of messages to be dispatched by a Looper. Messages are not added directly to a MessageQueue, but rather through Handler objects associated with the Looper.
简单翻译一下就是说:MessageQueue是比较低层的类,是持有Message的一个链表(由Looper分发)。Messages不是直接添加到MessageQueue中的,而是通过与Looper相关联的Handler来进行的。
在Android的消息机制中,MessageQueue最主要的方法就是它的插入和读取方法,分别对应enqueueMessage和next。因此主要分析这两个方法。
more >>首先介绍下什么是ThreadLocal,官方给出的介绍如下:
This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get or set method) has its own, independently initialized copy of the variable. ThreadLocal instances are typically private static fields in classes that wish to associate state with a thread (e.g., a user ID or Transaction ID).
翻译过来就是说:这个类提供了线程内部的局部变量,这些局部变量不同于它们普通的副本,因为每个其的线程(通过get或者set方法)都有自己的独立的变量。一般来说ThreadLocal都是private static的,用于关联线程。(英语比较蹩脚)
总结来说,ThreadLocal的作用就是提供线程内的局部变量,通过它可以在线程内部存储数据,只有在指定的线程中才可以获取到存储到数据,而其他的线程则不可以。用ThreadLocal可以实现一些比较复杂的功能,比如某些数据是以线程为作用域,并且不同线程有不同数据副本的时候,就可以采用ThreadLocal,比如Looper、ActivityThread、AMS等。另一个使用场景就是复杂逻辑下的对象传递,比如监听器的传递。
more >>