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. 开发MOSS自定义字段类型

    前段时间,由于刚好项目定制的需要,笔者就开发了几个自定义字段类型.在这抽空做个详细笔记,方便初学者学习.这方面的资料也很多,如果自身觉得不大明白可以参考下SDK和网上的相关文章.本章的目的主要是给新手 ...

  2. android网络编程之HttpUrlConnection的讲解--POST请求

    1.服务器后台使用Servlet开发,这里不再介绍. 2.网络开发不要忘记在配置文件中添加访问网络的权限 <uses-permission android:name="android. ...

  3. 利用proxychains在终端使用socks5代理

    最近用各种脚本下载东西的时候发现有的站点需要当地IP才能下,比如.....nico, youtube等: 所以就找了下能在终端用socks5代理的工具,最后找到了proxychains,从此再无压力= ...

  4. 贪心+bfs 或者 并查集 Codeforces Round #268 (Div. 2) D

    http://codeforces.com/contest/469/problem/D 题目大意: 给你一个长度为n数组,给你两个集合A.B,再给你两个数字a和b.A集合中的每一个数字x都也能在a集合 ...

  5. QProcess 进程类—调用外部程序

    http://blog.csdn.net/newbee520/article/details/8279101   启动一个新的进程的操作非常简单,只需要将待启动的程序名称和启动参数传递给start() ...

  6. UnicodeEncodeError: 'ascii' codec can't encode characters in position 14-15: ordinal not in range(128)

    python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报类似这样的错误. UnicodeEncodeError: 'ascii' codec can't ...

  7. 编程实现Windows瞬间关机

    我们先来看看Windows正常的关机流程:①关机指令通知Windows子系统csrss.exe,csrss.exe收到通知后会和Winlogon.exe做一个数据交换,再由Winlogon.exe通知 ...

  8. Error configuring application listener of class 报错 解决

    Error configuring application listener of class 次错误是由于工程没有贬义Class文件造成的,clean一下编译一下工程,clean之后进入项目目录查看 ...

  9. zf-关于交换工具配置文件,交换的“列名字段”前面加个“0,1,2”的意思。

  10. js 去除html标签

    function removeHTMLTag(str) { str = str.replace(/<\/?[^>]*>/g,''); //去除HTML tag str = str.r ...