分类目录归档:Android开发

android技术分享,分析

LeakCanary源码分析第二讲-RefWatcher详解

如果你已经阅读了LeakCanary源码分析第一讲,那么LeakCanary的基本架构应该已经掌握了。本文将详细分析RefWatcher的工作原理,当RefWatcher检查到引用路径不是弱通路的时候就会触发HeapDumper

WeakReference和ReferenceQueue

要理解RefWatcher的工作原理,首先需要知道WeakReference。当GC线程扫描它所管辖的内存区域时,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否(这一点与SoftReference不同),都会回收它的内存。由于垃圾回收器是一个优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。 WeakReference_obj WeakReference和ReferenceQueue联合使用,如果弱引用所引用的对象被垃圾回收,Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。上图中的实线a表示强引用,虚线aa表示弱引用。如果切断a,那么Object对象将会被回收。正如下面这段测试代码所示。 继续阅读

LeakCanary源码分析第一讲

本文将分析LeakCanary源码,介绍LeakCanary核心组件以及LeakCanary注册流程。如果你还不知道LeakCanary是什么,那么请一定要看这篇文章:LeakCanary让Android内存泄漏无处遁形

LeakCanary是Android内存泄漏检测工具,能够将内存泄漏在开发的过程中就暴露出来。

LeakCanary核心组件

LeakCanary-class-diagram 上面的类图可以分为三层来看,第一层包括ActivityRefWatcher、RefWatcher,第三层是Service,第二层是HeapDump.Listener它是用来衔接Watcher与Service的桥梁。 继续阅读

Android greenDao sessions详解

DaoSession类是greenDao的核心接口之一。DaoSession给开发者提供了entity操作的基本方法,以及Dao提供的一系列复杂方法。Sessions也用来管理实体的identity scope。

DaoMaster and DaoSession

正如greenDao使用快速入门所示,你需要创建一个DaoMaster来获取DaoSession。

需要注意的是,Database connection是属于DaoMaster的,因此多个session是引用的同一个数据库连接。新的session创建非常快,然而,每一个session都需要分配内存。

Identity scope and session cache 继续阅读

Android greenDao schema entity使用详解

Meta-Model-180

本文将会讲解greenDao的schema,entity,以及property的使用方法,如何在greenDao中使用继承,接口,序列化,以及保留自定义属性和方法等。

使用greenDao的第一步就是创建实体模型(entity model),用它来表示应用程序中使用的持久化数据。然后,greenDao基于这些模型生成Dao层的java代码。

Model本身也是java代码定义的。非常简单,基于DaoExampleGenerator创建一个java project。你可以查看(greenDao使用-快速上手)来了解详细代码。

右边展示的图例描述了meta model(元模型)。那就是用来描述领域模型的类。

Schema 继续阅读

Android greenDao简介

greenDAO-orm-640 greenDao是Android平台的对象关系映射工具object/relational mapping(ORM)。greenDao为关系型数据库提供面向对象的接口。数据库相关的重复枯燥的任务将由greenDao这样的ORM工具完成。

DAO Code Generation(DAO代码自动生成) 继续阅读