小结二零一二

这一年最深的体会就是过的很快,一年都在忙碌中读过,忙工作[占了绝大部分的时间],忙自己的事情,周末很少有两天能无所事事的。技术上没有什么太大的长进,想学的东西也没有怎么学,所以说起来今年不算满意。
时常在遇到路人,看他/她们在路边摊,在商场,在餐厅等等地方总能很开心的样子,为什么自己却没有这种心情,不是说自己觉得生活不开心,只是没有觉得高兴的东西,觉得这都似乎很平常。这一年感觉自己有些变化的就是平时说话的样子,非正式时间场合的讲话总能那么随意,不靠谱。以前我一直觉得自己没有啥脾气,不管自己还是和他人合作事情,都似乎总是那么温和,但是今年我发现自己有时候还是会“怒”。我公司老大跟我讲,不要总当老好人,该说NO的时候就要说,这个是我应该学习的地方。
在现在这家公司做了也超过一年了,觉得马马虎虎,可能公司的氛围不大适合我,公司重在员工之间的相互challenge,重在用bug来推动工作的进行[bug不一定要解的,都想先推给别人或者不解,实在是不行了才解],估计很少有人真心的想把这某个东西做好[这不是我自大或者说公司的坏话],不过这也可以理解,公司大了,相互合作的人多了,都有自己的想法。公司有位比较资深的工程师的签名大意就是“这间公司现在很少有人会去考虑一个软件的架构”,我也拜读过一位已离职的工程师2009年写的关于公司问题点的文章,到目前为止个人感觉都还基本适合,不过想想这应该是高级管理层应该去思考的问题吧。(毛病又犯了,又开始挑问题了 T_T,我想我应当才是完美主义者吧,哈哈哈)
今年书到是读了几本,但是不多,技术书籍没有很认真去读。有一本书印象比较深[当然不是技术书籍啦],打工旅行,不知道什么时候能放下所有的东西,出去走走?
明年争取能成为一位Linux下稍微熟练的C/C++码农[折腾了五六年的Java,现在来看C++也不是很难,只是不习惯,觉得不好用,常常怀疑自己会不会成为C++没学好,Java也忘记的那种人],学习Dalvik的基本知识[都想学了N久了,还是没入门]。
多关心下老爸,老妈,他/她们真的开始老了。。。

开发高响应的Android应用

网络上从来没有间断过对Android为什么这么慢的质疑,硬件配置高,但用起来就是不顺,顿卡,等等各种现象。
https://plus.google.com/100838276097451809262/posts/VDkV9XaJRGS
http://mobile.163.com/12/1123/05/8GVKOL7D0011309K_all.html
http://www.evolife.cn/html/2011/62866.html
可以参阅以上一些文章

除了Android的framework本身的设计因素外,那还有哪些地方值得我们注意的呢?
1、控制好APP的thread,UI响应的事情放到UI thread(也就是默认的main thread),其他比较耗时或者
跟UI不紧密的操作放到worker thread(这个需要开发者自己设计实现的一个thread,多半是执行和UI没有
什么关系的操作,并最终把需要显示的数据post回给UI thread),一般它需要快速响应来自UI thread的事
件请求,比如添加一个action(action就是UI thread接收到用户的事件之后需要做的动作)进来,删除某个
action,调整action的优先级。

2、不要让APP的thread爆掉,Java语言当中thread的使用很是简单和方便,正是因为好用所以不要滥用。

3、用户离开APP的时候,不需要再执行的操作就不必要再执行了。因为Android kernal支持完全的多进程,
所以用户离开了可能一些操作还是会占用CPU在执行,这是应当避免的。虽然会增加程序开发的复杂度,但是谁让
你做Android开发呢?

4、适当降低worker thread的优先级,这点很容易被人忽视,默认创建出来的thread的优先级和
main thread是一样,如果不降低它也会跟main thread抢CPU

5、友好的loading提示,这一招是心理战,但是也管用。

当然还有你的程序要写的高效率啦,现在很多人都能抱着能运行就好的心态,bug能不解就不解的心态,
这样怎么可能出高质量的APP的呢?高品质的东西是细细打磨出来的。

PS. 以下一些命令或者工具可能是有帮助的
$ adb shell top -m MAX_PROCESS_COUNT
$ adb shell top -m MAX_THREAD_COUNT -t

例如
$ adb shell top -m 20

Systrace参见
http://developer.android.com/tools/help/systrace.html

Traceview参见
http://developer.android.com/tools/help/traceview.html