- 博客(11)
- 收藏
- 关注
原创 理解ButterKnife:自动生成绑定资源的代码
JDK1.6提供的插入式注解器功能允许我们可以在自定义的注解处理器中查询、修改语法树中的信息。ButterKnife利用这一API获取到自定义的注解信息,根据这些注解信息生成一个java类文件。这个java类文件包含着原来应该由程序员手写的绑定资源代码。在运行时通过反射调用机制创建这个java类文件的实例,通过这个实例来调用这些绑定资源的代码。
2017-03-18 19:58:22
1021
原创 NDK开发中JNI ERROR XXX table overflow (max = XX)异常
在Java虚拟的运行时数据分区中,本地方法栈用来保存native方法调用中产生的引用,虚拟机可以用之来做可达性分析GC Roots。如果本地方法栈中的引用一直存活,且保持一定数量,则与之相关的对象将无法被回收。此时就可能存在内存泄露的风险。Java虚拟机不允许无限制地创建本地引用,它为本地引用的数量设置了上限,一旦超过这个上限就会报出JNI
2017-01-23 01:12:50
1323
原创 Android源码 —— 构建下载Android源码的虚拟机环境(Win7+VMware12+Ubuntu16)
Android源码 —— 构建下载Android源码的虚拟机环境(Win7+VMware12+Ubuntu16)本文将介绍从Win7系统开始一步步构建下载Android源码的虚拟机环境:**1、使用VMware安装虚拟机Ubuntu16.0; 2、在虚拟机中连接主机; 3、开始下载Android源码。**本文更侧重于将每一步需要使用的参考资料整合起来,并指出每一步中的需要注意的点。安装VMwar
2017-01-03 21:32:43
1850
原创 Android源码 ——编译Android5.0源码(Win7+VMware12+Ubuntu16)
本文将介绍如何在VMware+Ubuntu16环境下编译已经下载好的Android源码,启动模拟器。并继续下载Android Linux内核代码,并编译之。
2016-12-03 14:41:13
921
原创 Android中的ThreadLocal
ThreadLocal是解决线程安全问题一个很好的思路,它通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题。在很多情况下,ThreadLocal比直接使用synchronized同步机制解决线程安全问题更简单,更方便,且结果程序拥有更高的并发性。同时,当某些数据是以线程为作用域并且不同线程具有不同的数据副本时,或者需要在复杂逻辑(调用栈比较深已
2016-11-19 10:39:10
523
原创 Android开发————分析Native层内存泄漏
Android开发——使用DDMS分析Native层内存泄漏针对Java层的内存泄漏,Android提供了方便的内存泄漏检测工具,例如MAT、LeakCanary。但对于native层开发,要追查C/C++代码的内存泄漏,valgrind等常用工具并不适用。幸好,Google的bionic库提供了新的方法。下面就介绍如何利用DDMS分析Native层的内存泄漏。检查是否有 libc_malloc_d
2016-11-12 23:03:07
20872
1
原创 Android的主线程与子线程
Android中的程序入口在ActivityThread.main()方法。创建应用进程也包含了创建主线程的工作。Android中提供了一些有用使用子线程封装的类,如:HandlerThread,封装了Handler机制的实现;AsyncTask,用于执行轻量级的异步任务,并最终可以将结果更新到主线程中;IntentService,用于执行高优先的后台任务。
2016-10-26 00:08:07
2426
原创 Android的进程、线程与优先级
Android的进程、线程与优先级一、本文的结论1、Android中进程的优先级与垃圾回收机制相关,优先级越低被垃圾回收的机会越大。当内存不足的时候,总是低优先级的进程被最先回收;2、Android中线程的优先级与调用顺序有关,优先级越高被调用的可能性越高(注意,是可能性更高),也就是说即使线程A的优先级大于线程B,同等情况下线程A不一定先于线程B被调用。二、什么是进程、线程1、什么是进程、线程如果
2016-09-10 15:05:35
9976
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人