• 等级
  • 64745 访问
  • 34 原创
  • 4 转发
  • 58362 排名
  • 32 评论
  • 86 获赞

Android中的内存泄露

内存泄露是造成内存溢出的重要原因之一。Android的内存模型基于jvm的基本实现。底层依赖可达性算法来回收对象。JVM对每个对象状态的监控给我们带来了便利,虽然造成了一定程度上性能的损失。为了让大家能更明白内存泄露的本质,文章会从java的内存模型讲起,最终举出几个内存泄露的例子和解决方案。最重要的是,理解了原理,你将会举一反三,内存泄露将变得异常简单。 java运行时内存模型 ...

2018-03-29 15:30:23

史上最全面,清晰的SharedPreferences解析

基础用法 获取Sp: get put 监听器 原理分析 获取SharedPreferences 构造SharedPreferences getX原理分析 putX原理分析 创建editor putString apply apply总结 commit SharedPreferences最佳实践 勿存储过大value 勿存储复杂数据 不要乱edit和apply,尽量批量修改一次提交...

2018-03-27 14:52:00

Best Practice For Android

Best Practice For Android 阿里巴巴Android开发手册个人理解记录 Android基本组件 Activity间的数据通信: putExtra: 数据量小于 < 1024kb (IPC缓冲区大小限制) Huge Data: EventBus ActivityResults.data(static) 数据库 & SP Activity数...

2018-03-08 11:38:27

非UI线程更新UI!?

Android中非UI线程也可以更新UI,记录一次完整的探查过程!

2016-08-22 01:09:23

引入多线程的代价

在现代计算机系统中,使用多线程和并发技术无疑是提升系统运行效率的重要手段之一,他可以最大化的利用cpu的空闲时间,提升系统的吞吐量和速率,但是,引入这些诱人的技术代价也是不容忽视的,比如上下文切换带来的额外开销,内存同步造成的损耗等等,如果这些诱人的技术带来的性能提升不足以掩盖他们的缺点时,我们的工程系统就需要立刻被重新设计,生于忧患死于安乐,因此,在知晓其好处之前我们更应该洞察其缺点 上下文切换

2016-08-21 21:37:37

ListView缓存原理剖析

单类型View缓存机制 多类型View缓存机制 缓存原理剖析 总结 ListView缓存机制可以优化的地方单类型View缓存机制 请看上图,字母前面的数字表示元素在屏幕上的position,字母代表着View的类型,例如1A就表示第一个位置并且类型为A的View 当从状态一转变为状态2后,1A被滑出,5A被滑入,由于5A在被滑入之前缓存池中没有元素,所以5A将被创建,并且当1A滑出屏幕时将被投入到缓

2016-08-11 10:12:42

EventBus源代码深度剖析

分析之前的思考 registerthis时我们都干了什么 本分析基于的代码可以在这里clone到,强烈建议边看代码边浏览本文,本文章主要分析eventbus的核心思想,因为版本差异,有一些细节可能不太一样,但我建议各位不要陷入细节无法自拔,站在较高角度去吃透它的思想才是我们的目的,因此,一些基本概念已经有很多文章已经讲过,下文不再赘述 分析之前的思考 eventbus的

2016-08-03 08:57:02

观察者模式II--Java原生实现分析以及一种全新的观察者模式

分析传统观察者模式的不足以及JAVA原生观察者的缺陷,通过使用Map唯一的去确定每个观察者的身份,添加动态精确控制观察者行为的逻辑.

2016-07-29 17:35:17

避免陷入过度设计的泥潭

功能上的过度设计 程序上的过度设计 如何解决 TDD思考法测试驱动开发 注: 今天在知乎上看到了讲解过度设计的文章,觉得非常的有道理,自己去学习了这方面的知识,以下做一个总结学习了许多的设计模式之后,大部分人都会有滥用(或者设计不足)设计模式的经历,如何在其中找到一个balance,以下的文章就会给出一个解决方案,一种比较中和的思考方式,在此之前,我们先看一下我们经常会犯的几种错误 功能上的过度

2016-07-24 21:29:23

适配器模式

什么是适配器模式 类关系描述 代码描述 适配器模式的使用场景 适配器模式的思考什么是适配器模式 将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间 类关系描述 RealAction类是已经上线的类,客户用着它的realCall()方法实现了相应的需求,但是现在客户要求接口发生变化,Client那边现在需要实现Subject接口的类,但是需要的功能没有发生变化,意味

2016-07-24 20:46:41

Part3:Volley传递者原理分析

问题产生 创建传递者 传递的过程 一个比较重要的细节问题产生 我们先看一下Volley的使用方法: //第一步,创建一个RequestQueue队列 RequestQueue mQueue = Volley.newRequestQueue(context); //第二步,创建一个具体类型的对象,这里是StringRequest StringRequest stringRequest = new

2016-07-23 01:27:44

Part2:Volley请求失败的重试机制

Volley资源加载失败时的重试机制非常简单,放在Part2是因为不搞懂可能会影响后面的逻辑,所以简单看看代码,对着注释理解了即可 强调,看这一系列文章时手头一定要有完整的Volley源代码,可以对着理解,因为我写上的只是一部分RetryPolicy是一个接口,DefaultRetryPolicy是他的唯一实现类,重试机制启动的入口在BasicNetwork类中(进行网络操作的类),它会判断各种

2016-07-22 16:35:46

Part1:Volley磁盘缓存

CacheDispatcher CacheEntry和DiskBasedCacheCacheHeader DiskBasedCacheCountingInputStream 缓存的核心DiskBasedCache 初始化逻辑initialize函数 pruneIfNeeded get和put else 思考 LRU算法一定合理吗如何增大缓存的命中率 文件名重复问题 首先研究一下Volley的磁盘缓存

2016-07-21 13:58:02

观察者模式I

什么是观察者模式 代码描述 观察者模式给我们的思考 之外的想法什么是观察者模式? 观察者模式定义了对象之间一(主题对象)对多(观察者)的一种依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新 我们认识观察者模式可以通过报社这个经典的例子:报社的业务是出版报纸 向某家报社订阅报纸,只要他们有新报纸出版,就会给你送来,只要你是他们的订户,你就会一直收到新报纸 当你不想再看报纸的时候,取

2016-07-19 21:03:33

Part0:Volley源代码分析概述

简介 Volley是什么 Volley的特点 我们会怎么做 Volley总体架构 总体设计图 类关系图 核心功能流程图简介Volley是什么? Volley是Google官方推出的一款网络请求和图片加载框架,于Google I/O 2013大会发布. 从上图中可以看出,Volley非常适合那些通信频繁,但每次通信数据量不大的场景,这正是大多数Android通信场景的写照. Volley的特点 可扩展

2016-07-17 17:11:48

Part2:重新组织函数

介绍 提炼函数 用函数取代产生临时变量的语句 引入解释性变量 使临时变量也遵循单一职责介绍 过长函数是造成代码混乱的重要原因之一 将一个过长函数分解为多个小函数,每个函数都有自己的单一职责,并且使它们的名字具有自解释的功能(关键) 简短而命名良好的函数粒度很小,复用机会很大 会使高层函数读起来(调用这些小函数的地方)就像注释,前提是在命名上下点功夫,事实上也必须这样做 在重新组织函数中可能会遇见一些

2016-07-15 16:26:51

编写可读代码的艺术

命名 带上有效信息 有效用词避免歧义 约定俗成符合惯例 注释 类注释 字段注释 函数注释 异常注释 逻辑 表达式的书写习惯 循环表达式 结构 总结 编写可读代码,是基础中的基础,但又非常的重要,所以我把它放在了总结具体重构手段的开头,这个是必须要掌握的日常开发中,大多数情况下我们都是team开发,并且往往阅读>编码,所以你的一举一动和编码习惯都会影响到他人,作为团队,统一编码风格是基本要求,写出

2016-07-10 16:11:51

Part0:认识重构

什么是重构 为什么要重构 什么时候应该重构 总结什么是重构 Refactoring是这样的一个持续的过程,在不改变代码外在行为的前提之下,对代码做出修改,以改善其内部结构. 改善其内部结构的含义是提高代码的健壮性,可扩展性,可维护性,增强代码的可读性,我们日常工作一般有两件事,完成新功能开发 & 解决bug,改善其内部结构可以帮助我们更迅速,高效的完成这两件事,降低我们开发的成本,加快我们开

2016-07-10 10:37:17

全面解析单例模式

what why 单线程下的实现方式 懒汉式 多线程下的实现方式 饿汉式 懒汉式同步锁 双重校验锁 保证单例模式线程安全的另一种思路 思想 内部类实现单例 枚举类型实现单例 使用单例模式的风险和解决方案 风险 解决方案 为什么说枚举类型实现单例模式是接近完美的 总结what & why? 确保一个类只有一个实例,并提供一个全局访问点,常常被用来管理系统中共享的资源(作为一个Manager),例如数

2016-07-07 14:53:10

APK瘦身方案

去除减少无用资源文件库 引用的图片资源优化 引用的音频资源优化 Provided关键字 Proguard深度混淆代码 微信资源打包 全版本兼容的瘦身方案 插件化技术去除&减少无用资源,文件,库 buildTypes中开启minifyEnabled = true和shrinkResources = true去除无用资源和代码 去除没有用到的库和相应的so文件 在满足需求的情况下,将大型,重量级的库替换

2016-06-30 23:25:19

geekerhw

关注
  • 计算机软件