
Java
文章平均质量分 66
chcc_V5
Java + Android 里总共泡了5年,在深圳金立手机公司里干了3年,对Framework层代码有着一行一行拿着放大镜排查问题的经历,熟悉Android底层代码。我有着 上层App --> Android 底层 -->上层App + 服务器系统 的技术成长路线,积累了对Android系统的上下整体认知,对软件构造,软件管理,技术选型有一些心得,我现在是一家公司的合伙人,在主持一个智能眼镜相关的项目。
展开
-
关于java垃圾回收的一个疑问
public class Test { public static void main(String[] args) { A a = new A(); B b = a.getB(); a = null; // 对象a能否回收? while (true) { b.newObject(); } // ... } }原创 2011-05-12 19:44:00 · 412 阅读 · 0 评论 -
Android编程经验
总在解Bug,发现很多Bug其实来得很不必要,这是我总结的几点。 1. 不要假定那个Activity会被先调用,每个Activity都应该是独立的。唯一一定会被先调用的是Application,多个Activity、多个Service的共用部分(如数据库,util)的初始化工作(及退出时的清理工作)都应放到放到这里来。这样可保证你的Activity是一个独立的共享单元。 2.原创 2012-04-18 18:19:08 · 484 阅读 · 0 评论 -
进制转换,字符 <--> 数字
//10进制转换为16进制 System.out.println(Integer.toHexString(15)); //out:f //16进制转换为10进制 System.out.println(Integer.parseInt("f", 16)); //out:15 //数字转换为字符 System.out.println((char)97); //out:a原创 2012-04-18 18:21:18 · 491 阅读 · 0 评论 -
try..catch..finally块中的跳转语句(return,break,continue)使用注意事项
public class TryReturn { public static void main(String[] args) { // mtd1()返回1? mtd2()返回2? // 很可惜,返回的都是3 // 结论: 不要在try..catch..finally块中出现return等跳转出块范围的语句(>对此问题也原创 2012-04-18 18:10:39 · 6439 阅读 · 0 评论 -
不能使用IDE调试? 照样能很快定位问题
经常调试Android framework错误,framework不可能想使用IDE来step-by-step的调试。 为此,有时需要插入大量的log来帮助定位问题;有时知道了具体执行功能的函数,却发现调用者太多仍难以定位问题,最后只得花大把时间去阅读代码。 作为程序员,偷懒是种美德。我希望敲入调试语句的时候能偷懒一点,也希望能很容易地知道调用者是谁,于是有了下文。 pa原创 2011-12-22 18:03:43 · 579 阅读 · 0 评论 -
try的代码必须是一个原子整体,不要什么东西都往try里边塞
try的代码必须是一个原子整体,只是为了完成一个功能,不要什么东西都往try里边塞。 还是以例子说明吧,下边一个例子是检查两个标志位,本来这两个标志位没什么相关性,但因为被绑在了一起就产生了一些笑话。在一次真实的运行中,第一个isPass()出了异常,结果导致了接下去的语句没有执行,输出的结果成了两个“unknow”,而实际上第二个sPass()若能执行,它的结果会是pass。原创 2012-04-18 18:43:35 · 1546 阅读 · 0 评论 -
一些比较好的Android文章
Android系统源代码情景分析:基础知识 作者 罗升阳 发布于 2011年12月14日 摘要: 我们知道,Android系统是基于Linux内核来开发的,在分析它在运行时库层的源代码时,我们会经常碰到诸如管道(pipe)、套接字(socket)和虚拟文件系统(VFS)等知识。此外,Android系统还在Linux内核中增加了一些专用的驱动程序,例如用于日志系统的Lo原创 2011-12-23 22:04:45 · 537 阅读 · 0 评论 -
可定制替换规则的文本替换器
可以根据需要改进: 1. 让其不仅仅可以改SIM卡名称,适用于普遍的替换。(考虑提取抽象类) 2. 使用Omission策略判断可更多地使用正则表达式。(比如在判断 “ sim ” 和 ”simple“上) 3. 有一些特殊例子符合Omission策略,而实际却不能被忽略,这种情况应当能处理。(考虑修改Omission接口,增加一个会被优先处理的函数) 4. 改进效率,目前在太多的地方原创 2011-12-27 13:40:41 · 649 阅读 · 0 评论 -
java: 一些数字到字符的转换技巧,反射访问类成员数组的方法
!本文声明:谴责烂代码 ! 接下来是正文: 关于反射访问类成员数组的方法:记住java中的数组也是对象,用Field.getObject()就行了。 本文介绍两种转换方式(在for循环里)。 import java.io.IOException; import java.io.StringWriter; import java.lang.reflect.Field; pub翻译 2011-12-20 11:34:50 · 942 阅读 · 0 评论 -
使用基于AIDL接口的典型套路
使用基于AIDL接口的典型套路 try { final ITelephony phone = ITelephony.Stub.asInterface(ServiceManager.checkService("phone")); if(phone!= null && !phone.isSimInsert(sim原创 2011-11-24 17:56:43 · 469 阅读 · 0 评论 -
生成动态代理的通用java代码
生成动态代理的通用java代码。这段代码是一个类似Spring的可配置AOP框架中的一个类,其中Advice1是接口,包含before和after两个方法。 package pack.aop; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.refle原创 2011-10-25 21:33:22 · 371 阅读 · 0 评论 -
确保路径存在的函数 ensurePathExist
不管什么系统,很多文件操作得在保证文件(夹)路径存在的前提下才能进行。Symbian 提供了ensurePathExist函数,但Java API似乎没有相应的功能,所以只好自己搞一个了。考虑到使用程度较高,所以决定写点测试。有什么补充,欢迎提出。 废话少说原创 2011-10-09 03:06:44 · 830 阅读 · 0 评论 -
一种实现“通信层”的方案,主要演示超時控制
/** * 一种实现“通信层”的方案,主要演示超時控制 * * 2012-12-26 according the Thinking in Java */ package concurrent; import java.util.ArrayList; import java.util.concurrent.Callable; import java.util.concurrent.Ex原创 2012-12-26 14:51:41 · 534 阅读 · 0 评论