工作中的一些收获

这算是个总结篇吧。

1、Android方面

1)掌握了一种好的线程类模版:“create - run - close”模版,这种模版在工作过程中屡试不爽,大大提高了代码的可读性和健壮性,介绍如下:

在android大多数线程任务中可以采用“create,run,close”的工作模式,以往都在run函数结束前做清理工作(close),但后来逐渐明白了,close应该需要主动调用:a、手动调用close以便停止此线程;b、在run函数中出错(比如NC的断开连接)应该关闭线程了,回调到上层,由上层调用,而不是在run退出时close,这样做的目的是:close函数只调用1次。同时,往往在run函数出错时,会伴随着对用户的提示,比如提示连接断开了,这种提示是通过回调传给界面的。而在close时,往往也会导致run函数出错,因此close里首先要将回调对象设为null,免得在手动close后,也回调给上层提示。

2)充分利用子线程和Handler,不阻塞界面。

Android系统不允许在主线程中进行比较耗时的操作,以影响界面的流畅性,这一点一定要注意,跟通信打交道的接口,应该放到子线程中处理。这就得处理一大堆的回调、异步处理,类似Windows里的消息机制,Handler也实现了SendMessage功能(相当于PostMessage),进行异步处理,从子线程中将处理结果发送到主线程。

3)SQLite数据库使用时,一定要讲究效率

因为数据库读写是磁盘操作,一般都比较耗时,比如插入命令,执行的是“打开数据库文件 - 插入记录 - 关闭数据库文件”,插入一条命令大概耗时有100ms左右。如果插入100条记录的话就得10s钟了。使用事务(transaction)可以很好的解决这个问题,使用事务后,数据库只打开/关闭一次。

4)Android界面布局

基本熟练掌握了Android布局XML文件的格式,设计出一些相对比较复杂的界面。

5)接触后台服务Service程序,了解了一些常用方法,如何启动\停止。

6)更深入了解了List和Adapter

利用List控件和Adapter封装了功能相对强大的表格控件。

7)了解了JNC的基本原理与一些基本的编译步骤

2、C++

1)更加深入的了解了对象的引用,赋值,复制的概念。

 

Object a;

Object b = a;// 赋值

Object *pA = new Object;

*pA = a;// 赋值

Object &c = a; // 引用

Object d(a);// 复制

 

2)new 与 delete

谁new ,谁delete,比如下面的代码设计有误:

 

typedef struct _TTest
{
_TTest()
{
pValue = NULL;
}
   ~_TTest()
{
if (pValue != NULL)
{
delete pValue;
}
}
CType *pValue;
}TTest;

可能出错的情况有两种:

1、外部调用TTest,给pValue new 了值后,手动delete,导致在TTest析构时重复delete;

2、外部调用TTest,给pValue 赋了值,而在TTest析构时delete pValue;

 

3)CUSuite程序结构

通过添加报警预案模块,对平台管理模块的命令分发有了更清晰的认识。

posted @ 2012-01-19 11:49  jiaozebo  阅读(217)  评论(0)    收藏  举报