1. 一般性控件需要设置onclick事件才会有点击效果(selector)。

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

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. 公共类、接口、基类设计要职责清晰易理解,最大量减少别人使用时的难度。

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.

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

某技术大牛的帖子(android项目总结)的更多相关文章

  1. Android项目中JNI技术生成并调用.so动态库实现详解

    生成 jni方式有两种:一种是通过SWIG从C++代码生成过度的java代码:另一种是通过javah的方式从java代码自动生成过度的C++代码.两种方式下的步骤流程正好相反. 第一种方式:由于需要配 ...

  2. [转]20位活跃在Github上的国内技术大牛

    FROM : http://blog.csdn.net/yaoxtao/article/details/38518933 20位活跃在Github上的国内技术大牛 本文列举了20位在Github上非常 ...

  3. 【知识必备】浅淡MVP在Android项目中的实战演习,让代码结构更简单~

    一.写在前面 讲道理,这次是真的笔者很久都没有更新blog了,主要最近维护的框架问题也是层出不穷,而且对技术交流群的解答也让我身心疲惫,所以在这里跟关注我的人说声抱歉,没有定期给你们带来福利,那么这里 ...

  4. 技术大牛是如何拿到国内IT巨头offer的?

    关键字:技术大牛是如何拿到国内IT巨头offer的?  不是技术牛人,如何拿到国内IT巨头的Offer  不久前,byvoid面阿里星计划的面试结果截图泄漏,引起无数IT屌丝的羡慕敬仰.看看这些牛人, ...

  5. 干了这碗鸡汤:从理发店小弟到阿里P10技术大牛

    1.引言 MIT TR 35(MIT Technology Review 35 Innovators Under 35)——“全球 35 位 35 岁以下科技创新青年”榜单,是全球最权威的青年科技创新 ...

  6. 20位活跃在Github上的国内技术大牛

    登录|注册     leon-这个程序员不闷骚的博客 喜欢leon,有追求有原则有爱心的杀手,做一个有追求的程序员,代码是程序员的朋友,虽然没有热情,但是非常忠实.希望拥有一身绝世武功,再配一把绝世好 ...

  7. 【React Native开发】React Native移植原生Android项目(4)

    ),React Native技术交流4群(458982758),请不要反复加群!欢迎各位大牛,React Native技术爱好者加入交流!同一时候博客左側欢迎微信扫描关注订阅号,移动技术干货,精彩文章 ...

  8. Android项目开发遇到的问题(64K的错误)的解决之路,从入坑到出坑

    自己一个android项目,一直以来进展还算顺利,没有遇到什么严重性的问题,今天准备给同事手机上安装一下玩玩,谁知丢人丢大,无法build apk!报错!my god,我开发没问题啊,我手机连上usb ...

  9. eclipse创建android项目失败的问题 [ android support library ]

    有根筋搭错了,想起来android应用开发???? 放下两年的手机应用开发,昨天有更新了android SDK, 重新搭建开发环境. 这两年android 变化真TM的大............... ...

随机推荐

  1. 其他应用和技巧-eval()函数大行其道

    ---------------------------------- <script type="text/javascript">                   ...

  2. SpringSecurity自定义过滤器

    applicationContext-security.xml: <beans:beans xmlns="http://www.springframework.org/schema/s ...

  3. mysql 排序后获得某行的位置

    假设有test表,下图为表机构和数据,score表示积分.现在要查询积分排名为第几的id?? 查询语句 select id,score,(@rowno:=@rowno+1) as rowno from ...

  4. unable to connect to :5555

    有可能批处理文件用的adb和eclipse的adb不兼容.把你的批处理文件用的adb换成eclipse的adb就可以了: 运行结果:

  5. 设计模式二 适配器模式 adapter

    适配器模式的目的:如果用户需要使用某个类的服务,而这项服务是这个类用一个不同的接口提供的,那么,可以使用适配器模式为客户提供一个期望的接口.

  6. Inno Setup入门(十)——操作注册表

    有些程序需要随系统启动,或者需要建立某些文件关联等问题,这些都是通过在安装程序中对注册表进行操作的结果.Inno Setup中通过[registry]段实现对注册表的操作. 本段说明: 参数列表: 参 ...

  7. jmx additional port

    http://stackoverflow.com/questions/20884353/why-java-opens-3-ports-when-jmx-is-configured http://blo ...

  8. Java 中的四种引用及垃圾回收策略

    Java 中有四种引用:强引用.软引用.弱引用.虚引用: 其主要区别在于垃圾回收时是否进行回收: 1.强引用 使用最普遍的引用.如果一个对象具有强引用,那就 类似于必不可少的生活用品,垃圾回收器绝不会 ...

  9. MyEclipse build path no actions available

    MyEclipse,是在eclipse 基础上加上自己的插件开发而成的功能强大的企业级集成开发环境,主要用于Java.Java EE以及移动应用的开发.MyEclipse的功能非常强大,支持也十分广泛 ...

  10. 【多重背包】 poj 2392

    转自:http://blog.csdn.net/wangjian8006 题目大意:有一头奶牛要上太空,他有很多种石头,每种石头的高度是hi,但是不能放到ai之上的高度,并且这种石头有ci个将这些石头 ...