JackPeng

Keep on going never give up

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...

在AndroidStudio中自定义Gradle插件

1 创建Gradle Module AndroidStudio中是没有新建类似Gradle Plugin这样的选项的,那我们如何在AndroidStudio中编写Gradle插件,并打包出来呢? (1) 首先,你得新建一个Android Project (2) 然后再新建一个Module,这个Module用于开发Gradle插件,同样,Module里面没有gradle plug...

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系统源码的同学都知道,我们...

ANR的分析

一 ANR是什么? 1.1 ANR的定义: 简单说,通常就是App运行的时候,duang~卡住了,怎么搞都动不了。当卡住超过一定时间,Android系统认为这就是一次“ANR(Application Not Responding)”。 具体说,在以下情况发生时,会发生ANR(可能在不同ROM 中时间有所更改): 用户的输入在5s内没被App响应; B...