11 2013 档案
摘要:LRU Cache数据结构的介绍可以参考前面的http://www.cnblogs.com/XP-Lee/p/3441555.html。 本文以Android LRUCache来做一个简单的介绍。我们已经知道LRU Cache是一个hash map+双向链表的数据结构,那么在Android的Java自然也逃不出这个框,谷歌在Android3.1(v4 library也支持)之后提供了一个封装此数据结构实现的LRUCache类。Android LRUCache访问数据 LRUCache暴露了三个线程安全的方法get(K)、put(K)和remove(K),通过这三个方法,我们可以操作ca...
阅读全文
摘要:对于AbsListView子类,假设它的宽高是自适应的,你会发现getView()和getCount()会被疯狂的反复调用。即使在AbsListView子类设置完adapter后,getView()和getCount()也会被疯狂的调用10几次甚至更多。原因就在于measure过程,AbsListView子类会包含很多个item,而且由于AbsListView和Adapter机制的关系,会尽可能的将一系列item显示在屏幕中,当然这些item的父容器都是AbsListView子类。 在Android中View的布局机制分成两个阶段:measure和layout。在measure阶段时主要...
阅读全文
摘要:layout mechanism Android中View的layout mechanism主要分为两个阶段:measure阶段和layout阶段。layout mechanism按照一定的顺序进行,总体上来讲是先measure然后layout。一、measure阶段 以父容器提供的宽高参数作为限制条件,计算本身的大小(宽高)。这个过程需要调用final方法measure(int, int)完成。根据源码,我们可以知道实际的measure过程却是由回调方法onMeasure(int, int)来进行。因此我们常常可以看到在View的子类中,会根据需要,有重写方法onMeasure(int,..
阅读全文
摘要:什么是LRU Cache LRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。 什么是Cache?狭义的Cache指的是位于CPU和主存间的快速RAM, 通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术。 广义上的Cache指的是位于速度相差较大的两种硬件之间, 用于协调两者数据传输速度差异的结构。除了CPU与主存之间有Cache, 内存与硬盘之间也有Cache,乃至在硬盘与网络之间也有某种意义上的Cache── 称为Internet临时文件夹或网络内容缓存等。 Cache的容量有限,因此当Cache的容量用完后,而..
阅读全文
摘要:转自http://blog.csdn.net/wangkuifeng0118/article/details/7944215书架效果: 下面先看一下书架的实现原理吧! 首先看一下layout下的布局文件main.xml 1 2 8 9 10 23 24 31 32 33 40 41 53 54 55 56 57 58 上面是个自定义的gridview主要来实现书架,因为每一本书是一个item,在自定义的grid...
阅读全文
摘要:转载自http://blog.csdn.net/linghu_java/article/details/8595717 Android中加载一个Bitmap(位图)到你的UI界面是非常简单的,但是如果你要一次加载一大批,事情就变得复杂多了。在大多数的情况下(如ListView、GridView或者ViewPager这样的组件),屏幕上的图片以及马上要在滚动到屏幕上显示的图片的总量,在本质上是不受限制的。像这样的组件在子视图移出屏幕后会进行视图回收,内存使用仍被保留。但假设你不保留任何长期存活的引用,垃圾回收器也会释放你所加载的Bitmap。这自然再好不过了,但是为了保持流畅且快速加载的UI,.
阅读全文
摘要:1 /* 2 * Copyright (C) 2011 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache....
阅读全文
摘要:1 package android.util; 2 3 import java.util.LinkedHashMap; 4 import java.util.Map; 5 6 /** 7 * A cache that holds strong references to a limited number of values. Each time 8 * a value is accessed, it is moved to the head of a queue. When a value is 9 * added to a full c...
阅读全文
摘要:Android使用Linux的进程管理机制,以进程为单位分配虚拟地址空间。为了安全考虑,Android的不同进程之间是相互隔离的(进程之间被禁止直接交互)。如果进程间需要通信,必须通过Android的Linux内核提供的IPC机制实现间接通信。Linux使用的进程间通信有Socket、Signal、Pipe、Message Queue、Semaphore、Shared Memory等。但是,这些IPC机制要么效率低下要么不适合封装给上层复用,所以取而代之的是使用Binder。 Binder是Android对Linux内核层的一个扩展,属于一个字符驱动设备,Android便是通过这个驱动程...
阅读全文

浙公网安备 33010602011771号