• 等级
  • 65889 访问
  • 34 原创
  • 4 转发
  • 60444 排名
  • 32 评论
  • 87 获赞

Android中的内存泄露

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

2018-03-29 15:30:23

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

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

2018-03-27 14:52:00

Best Practice For Android

BestPracticeForAndroid阿里巴巴Android开发手册个人理解记录Android基本组件Activity间的数据通信:putExtra:数据量小于<1024kb(IPC缓冲区大小限制)HugeData:EventBusActivityResults.data(static)数据库&SPActivity数...

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队列RequestQueuemQueue=Volley.newRequestQueue(context);//第二步,创建一个具体类型的对象,这里是StringRequestStringRequeststringRequest=new

2016-07-23 01:27:44

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

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

2016-07-22 16:35:46

Part1:Volley磁盘缓存

CacheDispatcherCacheEntry和DiskBasedCacheCacheHeaderDiskBasedCacheCountingInputStream缓存的核心DiskBasedCache初始化逻辑initialize函数pruneIfNeededget和putelse思考LRU算法一定合理吗如何增大缓存的命中率文件名重复问题首先研究一下Volley的磁盘缓存

2016-07-21 13:58:02

观察者模式I

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

2016-07-19 21:03:33

Part0:Volley源代码分析概述

简介Volley是什么Volley的特点我们会怎么做Volley总体架构总体设计图类关系图核心功能流程图简介Volley是什么?Volley是Google官方推出的一款网络请求和图片加载框架,于GoogleI/O2013大会发布.从上图中可以看出,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

全面解析单例模式

whatwhy单线程下的实现方式懒汉式多线程下的实现方式饿汉式懒汉式同步锁双重校验锁保证单例模式线程安全的另一种思路思想内部类实现单例枚举类型实现单例使用单例模式的风险和解决方案风险解决方案为什么说枚举类型实现单例模式是接近完美的总结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

关注
  • 计算机软件