JackPeng

Keep on going never give up

使用MAT比较多个heap dump文件

 使用MAT比较多个heap dump文件 调试内存泄露时,有时候适时比较2个或多个heap dump文件是很有用的。这时需要生成多个单独的HPROF文件。下面是一些关于如何在MAT里比较多个heap dumps的内容(有一点复杂):1.     第一个HPROF 文件(u...

Android中Enum的替代方案

在Android的官方文档的内存管理中http://developer.android.com/training/articles/memory.html#Overhead 提到由于Enum通常需要两倍以上的存储空间,因此应当尽量避免Enum的使用。对此,Google官方推出了IntDef作为对Enum的替代。以下通过一个具体的例子来说明其用法: 例如我们有如下的一组Enum: publi...

Android应用内多进程分析和研究

如果一个进程占用内存超过了这个内存限制,就会报OOM的问题,很多涉及到大图片的频繁操作或者需要读取一大段数据在内存中使用时,很容易报OOM的问题。为了彻底地解决应用内存的问题,Android引入了多进程的概念,它允许在同一个应用内,为了分担主进程的压力,将占用内存的某些页面单独开一个进程,比如Flash、视频播放页面,频繁绘制的页面等。 什么是多进程? 多进程就是多个进程的意思,...

配置gradle.properties

在一些项目中会分拆app 和 lib , 这时候引用support的时候,一旦更改版本会出现需要同步更改两个地方的问题.这种情况,可以通过配置gradle.properties实现替换. 在项目编译过程中,gradle.properties配置的值会被编译解析,其作为配置文件使用是很有必要的. 在项目根目录的gradle.properties文件配置: # Project-wide G...

Gradle和Groovy

1 Groovy介绍 Groovy是一种动态语言。这种语言比较有特点,它和Java一样,也运行于Java虚拟机中。简单粗暴点儿看,你可以认为Groovy扩展了Java语言。比如,Groovy对自己的定义就是:Groovy是在 java平台上的、 具有像Python, Ruby 和 Smalltalk 语言特性的灵活动态语言, Groovy保证了这些特性像 Java语法一样被 Java开发...

Java中的Observer接口实践Observer模式

Observer源码 Observer是一个interface,只有一个update方法,两个参数,参数1位被观察者,参数2为被观察者额外传递的参数。 /** * A class can implement the <code>Observer</code> interface when it * wants to be informed of changes...

Mac OS X下Maven的安装与配置

Mac OS X 安装Maven: 下载 Maven, 并解压到某个目录。例如/Users/robbie/apache-maven-3.3.3 打开Terminal,输入以下命令,设置Maven classpath $ vi ~/.bash_profile 添加下列两行代码,之后保存并退出Vi: export M2_HOME=/Users/robbie/ap...

浅析Android中的线程状态

在分析ANR问题时,第一步就是把/data/anr/traces.txt这个文件adb pull出来分析, 它记录了手机发生ANR时, 各个进程里的所有线程在当时的状态. 典型的情况是: ----- pid 9644 at 2015-12-18 18:06:11 ----- Cmd line: com.tencent.androidqqmail:Push DALVIK THREADS: ...

PlantUML 高效地画图

程序员难免要经常画流程图,状态图,时序图等。以前经常用 visio 画,经常为矩形画多大,摆放在哪等问题费脑筋。有时候修改文字后,为了较好的显示效果不得不再去修改图形。今天介绍的工具是如何使用 Sublime + PlantUML 的插件画流程图,状态图,时序图等。这是一种程序员看了就会爱上的画图方式:自然,高效。 什么是 PlantUML PlantUML 是一个画图...

Android Studio中git的使用

前置和后续: Android Studio系列(二)使用Android Studio开发/调试整个android系统源代码 Android Studio系列(三)Version Control I 使用内置版本管理工具管理源码 Android Studio系列(四)Version Control II Annotate 开发android系统源码的同学都知道,我们...