工作中的一些收获
这算是个总结篇吧。
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 b = a;// 赋值
Object *pA = new Object;
*pA = a;// 赋值
Object &c = a; // 引用
Object d(a);// 复制
2)new 与 delete
谁new ,谁delete,比如下面的代码设计有误:
{
_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程序结构
通过添加报警预案模块,对平台管理模块的命令分发有了更清晰的认识。

浙公网安备 33010602011771号