1、资源包图片尽量控制在50k以内,否则可能读取失败

2、资源图片建议使用png格式,此格式在android系统上支持最好。对于jpeg和gif格式的图片,在android4.0以后版本,通过系统自缩放后,无法转码为565格式,只能使用默认格式

3、adapter的数据发生变化后,必须调用notify接口通知。

4、ui界面使用的数据,不能在子线程中修改。

5、网络需要考虑中国移动互联网的特点,需要考虑2g,3g,wifi,net,wap。网络接口必须设置超时时间,否则可能造成内存泄露

6、页面退出时,与页面相关的网络请求必须关闭,否则会造成流量浪费,还会造成内存释放不及时,和网络请求回调返回时页面已经关闭,造成crash

7、页面退出时,关闭与页面相关的定时器(尤其是循环定时器)、动画等。否则会造成内存泄露或crash

8、如果页面需要复杂手势的支持,需要考虑电阻屏兼容性。

9、手机屏幕密度各不相同,尺寸也各不相同,设备独立像素(dip)也不相同,虽然大多数手机是(320*480dip)。切图标注不能标注总长或者总宽,应该标注边距,内容区自适配。

10、服务器返回的数据必须判断真伪。对于服务器返回的数据,必须保持不可信的态度,保持代码健壮性。

11、整型溢出异常。对于服务器返回的id之类的数据,如果没有特殊的含义,必须转换成string使用。

12、防止数据库死锁。多线程使用同一句柄访问。多进程使用进程通信方式访问,如:content provider

13、读写磁盘需要判断sd卡是否存在

14、android平台内存限制严格,超过上限报OOM异常,此异常无法捕获。常用内存上限有16M,32M,64M,128M等,开发具体功能一定要考虑内存占用量,及时回收,对于不同内存的手机可以采用不同的策略。

15、SharedPreferences同一key不能写不同的数据类型,否则会crash,建议对于key统一管理,下线功能的key不要删除,防止被重复使用,造成升级用户crash。

16、改造账号系统一定要关注是否会影响易平台用户,做好兼容性

17、对于使用的第三方库,做好云控制,需要通知QA同学测试云开关。调用的第三方接口,尽量尝试捕获异常,保证app不要crash

18、产出必测list,提供给QA同学,上线前必测list必须逐条回归,防止发出去的app失去控制。

19、自定义控件需要考虑生命周期,这点经常被遗漏,会造成内存泄露

20、不要过多占用rom空间缓存数据,因为rom空间相对较小,大多数app都默认安装在rom,如缓存过多数据在rom,会造成用户无法安装其他app。建议rom只缓存重要数据。

21、对于支持多皮肤的app,资源分配极端情况下会double,需要额外关注大图片的释放时机。

22、通过调整alpha值做的夜间模式效果,并不是所有手机都适合

23、调用某些系统接口,需要考虑深度定制机的修改。如拉起系统设置界面,某些定制机对系统界面的调用方法做了修改,直接按照系统方法调用会crash,应该捕获异常,如出现异常提示用户手动设置。

24、传感器的使用。因android手机硬件的多样性。传感器灵敏程度,采样频率等各不相同,需要考虑兼容性。

25、部分界面需要考虑横竖屏切换,根据具体场景,确定切换策略。

26、android虚拟键盘多样性,根据父窗口获得的键盘高度并不准确,尽量把输入窗口往上提,防止被虚拟键盘遮挡。

27、webview不支持自动检测网络切换,网络切换后需要通知webview网络已切换。

28、多线程处理容易忽略内存使用,对于使用内存较多的线程,需要app控制串行执行或者控制内存占用。如下载gif图片,如果开5个线程同时下载不同的gif图片,每个图片2M以上,会直接crash

29、重视版本兼容性问题,对于升级用户,特别是跳跃式升级用户(如从1.1直接升级到3.0),需要兼容老版本的数据,特别是数据缓存和桌面快捷方式。

30、系统的异步任务AsyncTask,如果声明了targetSdkVersion小于等于12或者minSdkVersion小于等于12,即android3.1版本以上AsyncTask的默认行为是串行。

31、图片处理之后,如果差异性不大(如缩放比例接近1.0),有可能还是返回处理之前的图片引用,如果此时释放原始图片,处理后的图片也被释放了,是recycled状态,此时再使用这张图片,会crash

32、耗内存的操作(大图片处理,webview,视频播放等等),应该提取出来,放在单独的进程中运行,防止主进程内存被耗尽而crash

33、JNI包应该编译不同处理器的so文件(主要是arm,mips,x86),防止不兼容处理器而crash。

34、资源包的raw目录是不压缩目录,一些无需压缩的文件可以放在此目录。特别是声音文件,如果再次压缩在某些机型无法播放。

35、不要过度相信后台service,在某些机型上或者某些管理软件,后台service的进程有可能被回收。

36、java.lang.Thread创建以后必须调用start(),否则内存泄露。就算Thead变量是方法里面的临时变量也必须调用start,否则就会内存泄露。 调用run方法什么的都没用,必须start方法。原因是Thread在创建时,分加入到ThreadGroup中,group是全局的,所有Thread的引用会直接保存不会被释放掉。只有start调用,系统走完自己的run回调流程,才会从group里面释放。

android小细节的更多相关文章

  1. Android小项目之八 界面细节

    ------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...

  2. 关于 Unity 的一些小细节,不注意可能会被“坑”一些时间。

    关于 Unity 的一些小细节,不注意可能会被"坑"一些时间. 最近因为一些"小"问题,总是需要找很久的原因,总结一下 UnityEngine.Input 在使 ...

  3. react 移动端 兼容性问题和一些小细节

    react 移动端 兼容性问题和一些小细节 使用 ES6 的浏览器兼容性问题 react 对低版本的安卓webview 兼容性 iOS下 fixed与软键盘的问题 onClick 阻止冒泡 meta对 ...

  4. Oracle Sales Cloud:管理沙盒(定制化)小细节2——使用对象触发器更新数字字段

    在上一篇 "管理沙盒(定制化)小细节1" 的随笔中,我们使用公式法在 "业务机会" 对象(单头)上建立了 "利润合计" 字段,并将它等于 & ...

  5. Oracle Sales Cloud:管理沙盒(定制化)小细节1——利用公式创建字段并显示在前端页面

    Oracle Sales Cloud(Oracle 销售云)是一套基于Oracle云端的CRM管理系统.由于 Oracle 销售云是基于 Oracle 云环境的,它与传统的管理系统相比,显著特点之一便 ...

  6. Oracle Sales Cloud:报告和分析(BIEE)小细节2——利用变量和过滤器传参(例如,根据提示展示不同部门的数据)

    在上一篇随笔中,我们建立了部门和子部门的双提示,并将部门和子部门做了关联.那么,本篇随笔我们重点介绍利用建好的双提示进行传参. 在操作之前,我们来看一个报告和分析的具体需求: [1] 两个有关联的提示 ...

  7. Oracle Sales Cloud:报告和分析(BIEE)小细节1——创建双提示并建立关联(例如,部门和子部门提示)

    Oracle Sales Cloud(Oracle 销售云)是一套基于Oracle云端的客户商机管理系统,通过提供丰富的功能来帮助提高销售效率,更好地去了解客户,发现和追踪商机,为最终的销售成交 (d ...

  8. php课程---Json格式规范需要注意的小细节

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Lan ...

  9. ASP.NET MVC 自定义路由中几个需要注意的小细节

    本文主要记录在ASP.NET MVC自定义路由时,一个需要注意的参数设置小细节. 举例来说,就是在访问 http://localhost/Home/About/arg1/arg2/arg3 这样的自定 ...

随机推荐

  1. CentOS6.5系统挂载NTFS分区的移动硬盘 centos安装repoforge源(yum)

    CentOS6.5系统挂载NTFS分区的移动硬盘 作为IT的工作者,避免不了使用Linux系统,我现在使用的系统是CentOS6.5 X86_64位版本,但是插入NTFS移动硬盘没有办法识别.通过下面 ...

  2. selenium+python自动化之环境安装

    一.Python安装 1.操作系统:win7 64位系统 2.下载Python安装包,选择2.7版本和3.6版本都可以(最好安装2.7版本稳定)官网下载地址:https://www.python.or ...

  3. HTTP 无法注册 URL http://+:9999/CalculatorService/。进程不具有此命名空间的访问权限

    转自:http://www.cnblogs.com/flyher/archive/2013/06/28/3161170.html 写WCF时在 1 host.Open(); 报错:HTTP 无法注册 ...

  4. Readonly和Disabled的区别

    readonly 把输入的字段设为只读,但是没有禁用 readonly=” readonly”; disabled 禁用一个input元素. disabled="disabled" ...

  5. TP控制器(Controller)

    控制器的一些方法: Maincontroller.class.php文件: <?php namespace Home\Controller; use Think\Controller; clas ...

  6. 导出resource文件的的资源

    写个小工具,方便一次性将resource文件中的资源导出,不然反编译后一个个找,真是太麻烦了. using System;using System.Collections.Generic;using  ...

  7. CryptoAPI与openssl数字签名与验证交互

    昨天写过了RSA非对称加密解密的交互方式, 其实数字签名也是RSA非对称加密,只不过用私钥加密的,再加上个hash摘要 CryptoAPI与openssl RSA非对称加密解密(PKCS1 PADDI ...

  8. fiddler Android下https抓包全攻略

    fiddler Android下https抓包全攻略 fiddler的http.https的抓包功能非常强大,可非常便捷得对包进行断点跟踪和回放,但是普通的配置对于像招商银行.支付宝.陌陌这样的APP ...

  9. android打印调用栈

    在某些机器上,不能下断点,出现了某个诡异的问题,想到唯一的解决方式,就是打印调用栈了,google发现这个,记录下,以后备用 Log.d(",Log.getStackTraceString( ...

  10. 黄聪:WordPress 的 Hook 机制与原理(add_action、add_filter)

    稍有接触过 WordPress 主题或插件制作修改的朋友,对 WordPress 的Hook机制应该不陌生,但通常刚接触WordPress Hook 的新手,对其运作原理可能会有点混乱或模糊.本文针对 ...