刘聪

刘聪

3 posts
android

Android里巧妙实现缓存

为了快速查询会被多次调用的数据,或者构建比较废时的实例,我们一般使用缓存的方法。缓存的基本概念大体上差不多,这里就不再重复,有兴趣的可以查看维基百科的介绍。 缓存有很多的实现方式,技巧性还有坑都很多,今天我给大家介绍一些非通用的方法,可以巧妙地帮大家简单实现一些内存缓存。 Supplier和Memoize SQLite是Android里常用的一种数据存储方式,在访问数据库数据时需要通过SQLiteOpenHelper。 一份好的数据库连接代码应该能解决以下几个问题: a) 构建实例比较费资源 b) 数据库连接最好能复用 c) onUpdate等方法在执行时不能和其他实例构成冲突。 这里可以很简单的这样写 Suppliers.memoize(new Supplier<SQLiteOpenHelper>() { @Override public SQLiteOpenHelper get() { return new ...; } }) 这段代码利用了Guava提供的一些辅助方法实现Supplier和Memoize和逻辑。顾名思义,Supplier一般被用作factory,generator,builder,closure。Memoize类似于缓存这种概念,它一旦生成了一个实例,在以后的调用中都会返回同一实例,而且,

  • 刘聪
    刘聪

动态Android编程

注意:本文章有些例子需要对Java或Android有一定编程基础。 与Python相比,Java是一门比较严肃的语言。作为一个先学Python的程序员,做起Android难免会觉得不舒服,有些死板,非常怀念decorator等方便的方法。为了实现一个简单的逻辑,你可能需要写很多额外的代码。 举个例子,做数据库查询时,怎么从一个Cursor里取出类型为User的实例到List? 假设User是这样的 class User { int id; String name; } 找出User对应所有的列和每列在Cursor对应的索引。 如果索引存在,根据类型取出正确的值。 对于每个属性,不断重复上述步骤取出对应的值。 { int columnIndex = cursor.getColumnIndex("id"); if (columnIndex >= 0) { instance.id = cursor.getInt(columnIndex); } } { int columnIndex = cursor.

  • 刘聪
    刘聪
android

代码规范和Android项目中的一些可用工具

这里主要讲一下关于代码规范的相关问题,和在Android项目中如何利用一些工具进行规范和检查。代码规范不是一个Android项目特有的问题,所以前部分内容是不单针对Android的。 什么是代码规范? 代码规范一般是指在编程过程中的一系列规则规范。 一般来说代码规范可以分为两种。 一是编程语言本身在设计时所规定的一些原则,这类规则大部分都是强制的,像Python里用缩进表示逻辑块,Go里用首字母大小写表示可见度。 另外一种是在一些组织约定的一些规范模式或个人在编写代码时的一些偏好,这种一般都是非强制的。比如大括号是放在方法名的同一行呢还是另起一行,不同的人有不同的想法,我也不知道谁好,所以别问我。 假如是强制的,大家暂时也不能反抗,只能吐嘈吐嘈,我们需要关心和规范的是非强制性规范。 一般情况下代码规范应该包括以下东西: 代码格式和要求:注释,缩进,空格,空行 约定的方法名,变量名,类名等等取名相关问题 通用的一些模式和一些要避免的模式 为什么要有统一的代码规范? 假如你一个人单干,并且基本上也会这么继续下去的话,那这个东西对你不是太重要,随心就好,在这个流程里你就可以随意continue, break, return或exit。 我们先来看看以下几种代码规范不好的情况,虽然情况极端,但多少能看出些问题。 一个项目里用Python作为主要编程语言。一部分人用tab做缩进,

  • 刘聪
    刘聪