最近几个月的一些工作心得

1、不同编译环境下的long型长度不一致,使用long long类型解决。

  日前遇到一个long型数据由C++传递到Android环境中发生数据错误的问题,原因

在于不同环境下long型数据的字节长度不一。

  以下为不同环境下对应的long型的字节长度

  Lua脚本环境数值类型 8字节

  32位系统VC下    4字节 

  Android GCC下    4字节

  Java          8字节

  我的流程是Lua->C++->Jni Java,所以在中间丢失了4个字节的数据导致了奇怪的结果。

最终将C++代码中的 long定义为 long long,这样的写法可以同时通过VC以及GCC的编译,并获得

正确结果。

  其实也可以直接使用double类型。

2、编写测试代码,创建测试

  编写测试代码挺花时间,不过可以在系统正式运行前就进行测试,可以

提前解决隐藏的很多问题。

 

3、安卓定时推送的测试技巧

  在Android中测试某个时刻,比如Alarm定时器服务的启动,可以通过设定系统时间来测试。

如果你需要严格根据系统时间来测试程序逻辑,又不想等待很长(如一个小时)的时间来观察的话,

可以使用安卓系统上类似加速齿轮的工具来加速时钟周期(推荐烧饼加速器)

 

4、一套自定义UI需要具备的重要东西

  在UI布局的设计过程中,支持锚点对于提升工作效率和提高屏幕适配是有帮助的。

 

5、配置参数独立在一个配置文件中,便于查找、修改和维护

 

6、对于一些不需要实时排序或者计算但又耗费时间的任务。可以通过设置一个脏位标识,在一个定时周期

     后检查脏位进行处理,提高性能。

 

7、网络数据显示的用户体验设计

     显示网络数据的界面是先获取数据再打开,还是先打开再获取数据?

     用户体验上来说,玩家希望点击之后马上有响应,马上显示界面加loading动画再加载数据是大多数APP或者程序的实现选择。

     前者间接把界面显示变成了异步,不好管理(比如要马上对界面做一些操作或对象保存)。后者界面上是同步的,好管理,能

马上获取到界面的UI进行管理。

 

8、MVC 在界面开发中的应用

     Controller是根节点,Model 和 View 是其两个平行的子节点。

     View只显示界面,把所有的按钮等用户交互事件通过事件机制或者回调函数传递到Controller中。

     Model负责主要逻辑,比如网络读取、文件操作等,提供接口供Controller调用。

   Controller作为View和Model通信的中介,负责一些界面加载逻辑,通过View的回调访问Model,再将Model返回的数据调用对应

的View显示出来。同时它作为根节点的一个特性是,它可以和其他Controller进行交互,而View和Model是不行的,保持了他们的可重用性。

 

(PS:昨天给面试官问这不是也是一棵跟三层结构一样的垂直结构吗,当时脑袋不清晰没跟他说是因为Controller可以进行交互的原因,所以

C是根节点,不同于常见的三层架构)

 

9、如果一个列表,前边是可变长文本,右边是一个按钮,那么可以选择让按钮在父框架中靠右边框对齐,不需要根据变长文本的宽度来更改

     它自己的位置。编码方便且运行更加高效。

 

10、在编码的过程中先列好功能入口点,会避免粗心遗漏掉的地方导致产生潜在的BUG;

 

 

 

 

 

posted @ 2014-02-25 21:49  Kecp  阅读(230)  评论(0编辑  收藏  举报