某技术大牛的帖子(android项目总结)

1. 通常性控件须要设置onclick事件才会有点击效果(selector)。html

2.  <item android:drawable=”@drawable/btn_ct_green” />要写在selector的最后才会有点击效果。java

3. 制做.9格式图片选最小图,不然默认大小撑大控件。
4. 若是将一个对象的属性设置为static,那么就算对象实例被回收了,该属性也存在内存,生命周期为app的生命周期。
5. OOM:普通视图和listvew等大数据量展现视图的图片控制分开来。
6. OOM:listview等列表1秒真释放,把大数据量加载后不用的图片释放。
7. OOM:大图片使用前压缩。
8. OOM:减小大图。美工将所有规则图最小化,制做.9格式,以最小程度占用内存。
9. OOM:背景图、大图谨慎使用,不规则大图显式释放。
10. 提早得知大小可以使用,view.measure(-1, -1);可是view必须得有父view。
11. listview列表呈现多种样式,getViewTypeCount()方法返回所有样式的总数,getItemViewType(int pos)返回的值必须小于getViewTypeCount(),不然报错。

12. 公共类、接口、基类设计要职责清晰易理解,最大量减小别人使用时的难度。android

13. OOM:webview 内存溢出(OOM),重启一个新进程。
而且设置:须要在onPause时中止Timer,解决因为Timer在,致使WebCoreThread一直在,WebviewCache.db被锁定, 图文详情没法进入的问题webview.pauseTimers();
当Activity返回onResume时WebView.enablePlatformNotifications();webview .resumeTimers();
14. 触控范围要做为一个规范来控制到开发的每一步中,有src属性的能够设置padding,没有的为了避免失真,套一个layout,最小宽度48dp(9mm)。
15. 请求带有时间戳请注意,yy-MM-dd hh:mm:ss是12小时制格式。yy-MM-dd HH:mm:ss是24小时制格式。差异巨大。
16. 基础数据类型的封装类型是有预装缓存的,JVM给Byte缓存了-128~127的对象,Integer缓存了-128~127。因此Integer i =k,Integer j =k,,k = 127,i == j为true,k=128则为false。
17. 逻辑条件加紧要慎重,放宽松更要慎重;放宽后考虑是否更引起反作用问题,聚划算将id=()、itemId=(),i()都抓下拉起详情,结果频繁无辜拉起。收紧后考虑是否会引发扩展问题
18.  最后一刻加上的代码要严格的测试,不少时候就是最后‘觉得’加上了‘可有可无’的东西而致使崩溃掉。
19. Math.abs()取到的不必定是正数,Integer.minValue就是负值。
20. 多线程请使用并发容器放置变量,不轻易认为机会少不会冲突,并发量一大什么都有可能。ThreadPool.shutdownNow()以后只是清除等待队列,而后等待活动线程执行完。
21. 强转类型以前先先肯定对象不为空。
22. android2.3如下版本listView.setDividerHeight()函数调用后,notifyDataSetChanged()便不能记住位置。可以使用setSelection记住位置。
23. finish和startActivity位置很重要. 由A跳转向SingleTask的Activity B,A.finish的位置在startActivityB以前,退出B按home回到(home键退出或back键finishB)应用界面仍然是B,不管B是不是action.MAIN,overridePendingTransition须要在finish或者startActivity以后才有效。
24. 区域事件拦截:好比只要ViewA获取点击事件而组织其父控件和其余子控件触发事件,可重写activity的dispatchTouchEvent()函数,调用ViewA.getHitRect(rect),初始化一个Rect,判断event的getX和getY若是在rec以内,拦截ACTION_DOWN返回true,其他ACTION调用ViewA. dispatchTouchEvent() 便可拦截事件。
25. 一次有效触摸,当ACTION_DOWN返回ture时,其余事件也不会在获得响应。当event在rect以外时,能够经过event.setAction(MotionEvent.ACTION_DOWN);activity.onTouchEvent(event);来从新触发事件。
26. WebView:缓存与不缓存,很关键。尤为在活动、计时、含session界面。
27. WebView:当webview占用大量内存时,能够将WebView所有启动在另外一个进程中。
28. WebView:当多个重定向干扰或不能后退到上一页时,不使用webview.goBack(),本身用栈Stack维护Url,其关键在于区分是不是重定向,目前采用java调用js获取、分析网页内容判断是否重定向,若是不是再将url放入stack,反之不入栈。
29. 无线电波状态机:应用运行在前台考虑避免延迟阻塞,运行在后台关注电量浪费。优化网络链接:预取数据,批量传输与链接(包含携带、顺带其余数据),减小链接次数(规避高频心跳)。
30. 当listview含有Header时,在onItemClick事件中请这样获取ItemObject:Object obj = parent.getAdapter().getItem(position); 先判空,再强转为须要的对象。
31. WebView: 注意对下载文件的支持;shouldOverrideUrlLoading返回false,会自动加载该页,返回true不会加载网页,须要本身处理(以前返回true,调用WebView.load(url)结果形成重定向网页不能回退的问题,本身花了很大代价才解决,直接返回false会自动加载)。
32. 使用一个函数,尤为别人写的函数,无论怎么诚恳的承诺参数不会为null,请尽可能作非空判断。除以一个变量以前,先肯定其不为0.
33. 若是程序自自动,或者后台耗流量,首先检测manifest中静态注册的广播,它会拉起程序。
34. findbugs结合使用ADT(16之后)自带的lint检测程序中的问题,lint能够检测出未使用的图片和更具android特性的问题。
35. View onMeasure以后,width不必定有值,若是设置了LayoutParagrams那么view.getLayoutParams().width将有设定值。
36. Gallery特性改善:一次触摸只切换一张图片:复写onFlying直接返回true;使触摸更加灵敏:复写onScroll 调用super.onScroll(e1, e2, distanceX * 1.5f, distanceY),使distanceX 变大就更加灵敏。
37. Gallery视觉优化:setStaticTransformationsEnabled(true)以后,getChildStaticTransformation方法生效,默认方法会使图片alpha值改变变而视觉不清,复写能够利用Camera产生xyz和角度的改变,从而优化视觉体验,好比打造3D画廊。
38. 可共用的对象属性用static来保持一份节省资源,每一个实例或者对象单独享用的属性切记不要static。
39. 改变一个类的私有属性:
Field field = ViewGroup.class.getDeclaredField(“hsl”);
field.setAccessible(true); field.set(listView, 0);
40.  Which client is best?

Apache HTTP client has fewer bugs on Eclair and Froyo. It is the best choice for these releases.web

For Gingerbread and better, HttpURLConnection is the best choice. Its simple API and small size makes it great fit for Android. Transparent compression and response caching reduce network use, improve speed and save battery. New applications should use HttpURLConnection; it is where we will be spending our energy going forward.缓存

 

http://www.vmatianyu.cn/poly-effective-client-1-issues-lessons.html网络

相关文章
相关标签/搜索