- 1、建议把项目一分为二,第一部分是作为Libarary的项目,第二部分是相应的App项目。
其中App项目引用Libarary的项目;Libarary项目作为一个公共的库,主要是一些工具类,或者自定义的一些控件,这些工具类和控件与App项目分离,可以供以后其他的项目使用。
Libarary的项目和App项目共存:
App的目录,把与本应用相关的内容放到这个项目中:
Libarary的项目:
好处:管理方便、逻辑和界面可以更好的分离、App的项目目录冗余减少、有利于积累一些公共的代码;
可以从引用的库中引用资源
如果使用这种方式来创建应用,那么在svn中也需要在对应的应用目录中创建这对应的两个目录。
- 2、在项目中要用到的文本,尽量在xml里面定义,然后在java代码中引用。
在xml文件修改比在java中去寻找然后修改方便。
- 3、要考虑到Activity和进程被杀掉的情况;除了正常退出Activity外,还有可能是:Activity因其他原因被杀,比如系统内存过低,系统配置变更,有异常等等,要考虑和测试这种情况,特别是Activity处理重要的数据时,做好的数据的保存。
- 4、Activity间传数据,要用Intent传数据,避免用静态变量传递数据。
- 5、不要用四大组件去实现接口;一是组件的对象都比较大,实现接口比较浪费,而且让代码更不易读和理解;另外更重要的是导致多方引用,可能会引发内存泄露。
浪费:引用时传入一个大对象,调用接口方法时也是调用这个大对象的方法;
易读性:使得对象的方法增多,增加复杂,并且没有明显表明实现的是哪个接口的方法;
内存泄露:一旦某个可能会常驻内存的对象引用了这个对象,就会造成内存泄漏;
- 6、用getApplication()来取Context当参数;对于需要使用Context对象作为参数的函数,要使用getApplication()获取Context对象当参数,而不要使用this,除非你需要特定的组件实例!getApplication()返回的Context是属于Application的,它会在整个应用的生命周期内存在,远大于某个组件的生命周期,所以即使某个引用长期持有Context对象也不会引发内存泄露。
- 7、Android程序员应该要学会使用draw9patch.bat工具进行.9格式图片的绘制。
- 8、当线程空闲的时候,应该要让线程阻塞。
线程阻塞可以让更多的时间交回给主线程,这样子使得主线程绘制界面的时候更流畅;
- 9、wifi,3G,2G处理规范。
网速不一样;根据不同的网速做不同的超时处理;
- 10、SDCard的情况
当有使用SDCard时,先检测是否存在,以及空间是否满了
- 11、令牌失效的处理。
一般情况下,令牌失效会返回一个规定好的负的code值,如-200;
令牌失效一般处理为跳到重新登录的界面,进行登录;
- 12、Json数据的解析,改为使用opt类的方法。
- 13、如果一个View是使用了图片资源,那么最好不要设置wrap_content;
除非你的这个图在各种设备上都有对应的资源
- 14、每个应用务必做好本地缓存,支持离线浏览。
- 15、尽量要支持离线操作。
断网的情况下,也可以发表状态、上传图片等,并且可以立即显示上传后的效果;等到下次有网络连接时,再在后台进行http请求。
- 16、有需要的,应该要实现上传队列。
在后台进行图片的上传操作,这些操作对用户的其他的操作没有任何影响;
- 17、处理应用的重要异常和错误,将异常和错误以某种形式发送给服务端。
本地做好错误的log日志;
调用服务器接口,发送错误信息;
以邮件形式发送服务器;
- 18、刚打开应用程序就会进行检测版本的更新。