LruCache原理和用法与LinkedHashMap

一.LruCache算法

LruCache算法就是Least Recently Used,也就是最近最少使用算法。

他的算法就是当缓存空间满了的时候,将最近最少使用的数据从缓存空间中删除以增加可用的缓存空间来缓存新内容。

这个算分的内部有一个缓存列表。每当一个缓存数据被访问的时候,这个数据就会被提到列表头部,每次都这样的话,列表的尾部数据就是最近最不常使用的了,当缓存空间不足时,就会删除列表尾部的缓存数据。

Mehr lesen

关于散列Hash的一点笔记

散列

散列表的实现通常叫散列,散列是一种用于以常数平均时间执行插入,删除,查找的技术。

Mehr lesen

APP启动页背景颜色变化

在APP的启动页经常会有一些渐变效果。

如果是从半透明渐变为不透明,用View动画AlphaAnimation就能完成。

而View动画只有渐变,旋转,平移,和缩放四种动画效果,是完成不了颜色变化的任务的。所以需要用到属性动画。

原文地址:http://blog.csdn.net/qq_25806863/article/details/77194271

demo下载:http://download.csdn.net/download/qq_25806863/9934747

Mehr lesen

ArrayList和LinkedList的简单实现

  • ArrayList提供了一宗可增长数组的实现。有点事对get和set调用花费常数时间。缺点是插入和删除代价昂贵,除非插入和删除是在ArrayList的末端进行。
  • LinkedList提供了双链表实现。优点是,插入和删除开销很小,花费常数时间。缺点是不容易做索引,get和set调用昂贵,除非调用接近表的断点的项(离哪端近就从哪端开始)。

Mehr lesen

Android-socket的基本使用,发送文字和图片以及心跳

项目需求收集通过Socket向服务器发送图片,之前没搞过,网上搜搜写了下面的例子,勉强解决了需求。

为了测试切换着方便,所以方法写的有点碎了。。。
原文地址 http://blog.csdn.net/qq_25806863/article/details/75533109

Mehr lesen

将带有jni的Eclipse项目导入AndroidStudio遇到的问题

当然前提是本地已经配置好了ndk的环境

Mehr lesen

AVL树的旋转图解和简单实现

AVL树是带有平衡条件的查找二叉树。这个平衡条件要容易保持,而且他要保证树的深度为O(logN)

原文地址http://blog.csdn.net/qq_25806863/article/details/74755131

Mehr lesen

查找二叉树的简单实现

查找二叉树首先也是个二叉树,符合二叉树的一切特点。

原文地址:http://blog.csdn.net/qq_25806863/article/details/74638590

Mehr lesen

ADB常用命令

一些用过的ADB命令,有些需要root。

Mehr lesen

Android解压中文乱码

在Android中内置有解压的工具,一般可以使用下面的方法解压:

注意import的包:

Mehr lesen

通过轮廓简单实现一个圆图

实现圆图的方法有很多种,这是一种使用轮廓和剪切。

通过setOutLineProvider提供一个轮廓

通过setClipToOutLine(true)来让视图按轮廓剪切

代码很简单:

Mehr lesen

Kotlin让属性只能被赋值一次且不能为空

有时候要求一个属性只能赋值一次,且不能为空,可以用下面的方法

本文地址: http://blog.csdn.net/qq_25806863/article/details/73277876

Mehr lesen

对一个KotlinAPP的copy

最近看了下Kotlin。随便找了个简单的地址就开始了copy。真的是copy,代码结构,布局,图片等都是copy的。

本文地址: http://blog.csdn.net/qq_25806863/article/details/73209612

主要是为了体验一下Kotlin在Android开发中是什么样子的。

Mehr lesen

Android多线程-AsyncTask工作流程(源码)

AsyncTask的源码是很简单的,看着并不复杂。只是对Handler和ThreadPoolExecutor进行了一下封装。

基于api25(7.1)的代码,

使用起来也是很简单的,看上个就知道了。一般要继承AsyncTask并重写下面几个方法,这些方法的执行顺序一目了然:

原文地址 http://blog.csdn.net/qq_25806863/article/details/72820844

Mehr lesen

Android多线程-AsyncTask的使用和问题(取消,并行,屏幕切换)

AsyncTask是Android提供的一个执行异步工作的类,内部其实是运用了线程池和Handler来进行异步任务的执行和与主线程的交互。AsyncTask只是一个辅助类,适合执行时间短的异步任务。

本文基于Android7.0的代码来说的。

原文地址 http://blog.csdn.net/qq_25806863/article/details/72782050

示例

AsyncTask的使用方法是很简单的。就做一个简单的进度条。

Mehr lesen

Android纯的二维码扫描界面和功能-zxing

这是一个只有一个二维码扫描界面的demo,方便之后集成使用。

原文地址 http://blog.csdn.net/qq_25806863/article/details/72139582

CSDN下载地址 http://download.csdn.net/detail/qq_25806863/9842656

demo的GitHub地址 https://github.com/wangyisll/QRDemo

Mehr lesen

Java多线程-CompletionService

原文地址 http://blog.csdn.net/qq_25806863/article/details/71743659

之前说过,线程池ThreadPoolExecutor可以调用submit方法来获取返回值Future。像下面这样:

Mehr lesen

Java多线程-线程池ThreadPoolExecutor的submit返回值Future

原文地址 http://blog.csdn.net/qq_25806863/article/details/71214033

一般使用线程池执行任务都是调用的execute方法,这个方法定义在Executor接口中:

Mehr lesen

java多线程-ThreadPoolExecutor的拒绝策略

概述

原文地址 http://blog.csdn.net/qq_25806863/article/details/71172823

在分析ThreadPoolExecutor的构造参数时,有一个RejectedExecutionHandler参数。

RejectedExecutionHandler是一个接口:

1
2
3
public interface RejectedExecutionHandler {
void rejectedExecution(Runnable r, ThreadPoolExecutor executor);
}

里面只有一个方法。当要创建的线程数量大于线程池的最大线程数的时候,新的任务就会被拒绝,就会调用这个接口里的这个方法。

可以自己实现这个接口,实现对这些超出数量的任务的处理。

Mehr lesen

AndroidStudio运行java的main方法

要做AndroidStudio上运行java的main方法很简单。

原文地址 http://blog.csdn.net/qq_25806863/article/details/71171321

Mehr lesen