android代码开发规范总结

1、activity基本组件

1、activity间的数据通信,对于数据量比较大的,避免使用intent+parcelable,避免报transactiontoolarge异常,可以考虑eventbus,以免造成transactionTooLargeException,
2、actvity通过隐式跳转,发出intent之前必须通过resolveActivity检查,避免找不到组件报ActivityNotFoundException。
3、避免在Service#onStartCommand/onBind执行耗时操作,如果有需要使用intentservice或其他异步机制完成。
4、避免在BroadcastReceiver#onReceive中执行耗时操作,如果有使用intentservice,而不应该在BroadcastReceiver内创建子线程去做。
5、对于应用内广播,优先使用LocalBroadcastManager来进行注册和发送,LocalBroadcastManager安全性更好,同时拥有更高的运行效率。
6、当onPause执行完毕才会执行下一个activity的onCreate方法,所以不能再onPause方法内执行耗时操作.
7、广播注册记得取消

2、UI布局

1、使用relativelayout降低布局层级
2、activity中对话框尽量使用dialogfragment,而非dialog/alertdialog。便于随activity生命周期管理对话框/弹框浮层的生命周期
3、避免过度绘制
4、使用merge,viewstub优化布局,尽可能减少ui层级

3、进程、线程与消息通讯

1、不要通过intent传递大数据
2、application初始化代码确保只在自己需要的进程初始化,后台进程减少不必要的业务初始化
3、不要随意创建线程,使用线程池
4、线程池不允许使用Exectuors去创建,而是通过threadpoolExectuor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险
5、新建线程,定义自己业务的线程名称,便于性能优化和问题排查
6、ThreadPoolExectuor设置线程存活时间,确保空闲线程能被释放
7、禁止在多进程之间用sp共享数据,如果要共享数据,可以采用contentProvider
8、进程间数据共享使用数据库,而非文件,sp或者intent之间传递

4、文件与数据库

1、不要硬编码文件路径,使用android系统api
2、使用外部存储时,必须检查外部存储的可用性
3、应用间共享数据时,不要通过放宽系统权限的方式去实现,而应使用fileProvider
4、sp提交数据时,尽量使用apply。而非commit。一般来讲,仅当需要确定提交结果,并据此有后续操作时,才使用commit。
5、cursor使用完必须关闭
6、多线程操作写入数据库时,需要使用事务,避免出现同步问题。
7、大数据写入数据库时,请使用事务或者其他能够提高io效率的机制,保证执行速度
8、执行SQL时,应使用insert()、update()、delete(),不要使用execSQL,以免SQL注入的风险。

5、bitmap、drawable与动画

1、加载大图或者一次性加载多张图片应该在异步线程中执行
2、使用glide加载图片
3、png图片压缩,减少包体积
4、使用完的图片,及时回收
5、在onpause或者onstop回调中,关闭当前activity正在执行的动画
6、使用ARGB_565代替ARGB_888,减少内存占用。

6、安全与信息安全规范

1、使用pendingIntent时,禁止使用空intent,同时禁止使用隐士intent
2、将android:allowbackup属性设为false,防止adb backup导出数据
3、在实现的hostnameverify子类中,需要使用verify函数校验服务器主机的合法性,否则会导致恶意程序利用中间人攻击绕过主机名校验
4、META-INF目录不能包含如apk.dex,so等敏感文件,改文件夹没经过签名,容易被恶意替换
5、receiver/provider不能再毫无权限的控制下,将android:export设置为true
6、阻止webview通过file:schema方式访问本地敏感数据
7、不要广播敏感信息,以免被别的应用收到,或者setpack控制
8、不要把敏感信息打印在log中
9、对于内部使用的组件,显示设置组件的android:export设置为false
10、应用发布前确保android:debuggable属性设置为false
11、传输使用https证书至少强校验
12、敏感数据传输要加密
13、前端数据不可信,后端数据要校验
14、敏感系统使用vpn连接
15、本地不能明文保存个人敏感数据,敏感数据加密保存
16、本地不能保存账号密码

7、其他

1、不要通过msg传递大的对象,会导致内存问题
2、不能使用system.out.println打印log
3、log的tag不能为""

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值