
笔记总结
文章平均质量分 50
chcc_V5
Java + Android 里总共泡了5年,在深圳金立手机公司里干了3年,对Framework层代码有着一行一行拿着放大镜排查问题的经历,熟悉Android底层代码。我有着 上层App --> Android 底层 -->上层App + 服务器系统 的技术成长路线,积累了对Android系统的上下整体认知,对软件构造,软件管理,技术选型有一些心得,我现在是一家公司的合伙人,在主持一个智能眼镜相关的项目。
展开
-
C++防止内存泄漏简单方法
<br /> 在Symbian C++编程程中遇到的一个最棘手问题就是内存泄露,如果内存泄露没有用正确方法去解决,则很容易衍生出一些难以解释的错误。 为此我专门总结出几条防止内存泄露的原则。<br /><br />四种基本的类<br /> T类一般都是在栈上分配的,不需要明确的分配操作,也不需要实现复制构造函数。T类的析构函数不会被执行,所以T类的成员数据不可以使用指针,引用,句柄或含有析构函数的类的类型,所以T类的成员数据只能是固有类型和其他T类类型。基本数据类型都属于T类范畴,如TI原创 2011-05-30 23:22:00 · 1091 阅读 · 0 评论 -
Android编程经验
总在解Bug,发现很多Bug其实来得很不必要,这是我总结的几点。1. 不要假定那个Activity会被先调用,每个Activity都应该是独立的。唯一一定会被先调用的是Application,多个Activity、多个Service的共用部分(如数据库,util)的初始化工作(及退出时的清理工作)都应放到放到这里来。这样可保证你的Activity是一个独立的共享单元。2.原创 2012-04-18 18:19:08 · 484 阅读 · 0 评论 -
用命令行运行单元测试
对于如下的manifest文件 package="com.android.calculator2.tests"> android:targetPackage="com.android.calculator2" android:label="Calculator Launch Per原创 2012-04-18 19:00:28 · 1668 阅读 · 0 评论 -
Android的日志
Slog打印的日志用 adb logcat -b system 查看-b后边加events 查看DVM虚拟机日志(是虚拟机吗?);radio 查看无线及射频相关的日志;main the default,一般的应用输出的日志,即Eclipse查看到的;注:这些参数可能是来源于android系统下的 /dev/log/chencc@chencc-desk原创 2012-04-18 18:28:37 · 698 阅读 · 0 评论 -
不能使用IDE调试? 照样能很快定位问题
经常调试Android framework错误,framework不可能想使用IDE来step-by-step的调试。 为此,有时需要插入大量的log来帮助定位问题;有时知道了具体执行功能的函数,却发现调用者太多仍难以定位问题,最后只得花大把时间去阅读代码。 作为程序员,偷懒是种美德。我希望敲入调试语句的时候能偷懒一点,也希望能很容易地知道调用者是谁,于是有了下文。pa原创 2011-12-22 18:03:43 · 579 阅读 · 0 评论 -
关于一个通信层的设计
通信层通常作为一个软件的底层,负责与外界打交道。 这里的通信特指异步通信,发出的请求可能得不到响应,可能很久才响应,也可能返回无效响应。但为了请求一方的上层能够正常工作,一个通信层应该能完全应付这些情况。以下是总结的几点,不分先后,同等重要。每个任务都有唯一的身份标识。每个已发送请求的任务都进入已发送队列(写到这里想起了ril.java),任务完成(返回了响应结果)时原创 2012-04-18 18:46:55 · 905 阅读 · 0 评论 -
两种跨进程通讯的方式,都以activity + service的示例
... android:icon="@drawable/ic_launcher" android:label="@string/app_name" >原创 2012-04-18 18:49:56 · 528 阅读 · 0 评论 -
try的代码必须是一个原子整体,不要什么东西都往try里边塞
try的代码必须是一个原子整体,只是为了完成一个功能,不要什么东西都往try里边塞。还是以例子说明吧,下边一个例子是检查两个标志位,本来这两个标志位没什么相关性,但因为被绑在了一起就产生了一些笑话。在一次真实的运行中,第一个isPass()出了异常,结果导致了接下去的语句没有执行,输出的结果成了两个“unknow”,而实际上第二个sPass()若能执行,它的结果会是pass。原创 2012-04-18 18:43:35 · 1546 阅读 · 0 评论 -
一旦需要使用共用pid,请把使用pid部分独立开来
解决方案:使用service,intentService 等,让服务运行于pid中,程序的其他部分通过这些个服务来间接使用这些pid的功能。或者使用aidl,就像ITelephony 和 PhoneInterfaceManager。原创 2012-04-18 18:32:54 · 2177 阅读 · 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 评论 -
在多个文件中查找字段的命令
在多个文件中查找字段的命令:grep -r "your_find" `find . | grep -v .svn | grep -i .java` 注: ` 是Esc建下边的那个按键, 不是单分号。可以支持多文件查找的工具还有 vimgrep, sgrep(貌似Android源码工程里就是用这个) 等等。原创 2011-12-30 17:17:00 · 1175 阅读 · 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 评论 -
通过接口复用代码
<br /> 通过接口实现复用代码的两种方式:<br /> 如果是同一规划的类库,那么创建这些类时要遵循一个(组)已规划的统一接口。<br /> 但很多情况下,类库是被发现而非被创建的,这时可以使用适配器模式。<br /><br /> 依赖接口远比依赖抽象类自由,因为接口不附带有相关的存储且不受分类学限制。原创 2011-04-20 17:56:00 · 515 阅读 · 0 评论 -
适配器模式
适配器向上提供匹配于使用者的接口,向下委托类(库)的接口完成实质工作,中间是完成这两种接口的转换。代码举例如下://被适配的类,别人的类class Xxx{ public void method(){ System.out.println(getClass().getSimpleName()+" processed"); }}//适配器,完成接口转换class XxxAdapter implements IPr原创 2011-04-20 17:53:00 · 450 阅读 · 0 评论 -
活动对象简介
Symbian编程——异步请求与活动对象,观察者模式/回调机制原创 2011-05-30 22:56:00 · 1769 阅读 · 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 评论