加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

腾讯架构师教你如何写出Android规范文档

发布时间:2019-11-04 23:31:55 所属栏目:评论 来源:techlearn
导读:前言 一份合格的代码不应只满足于实现功能, 更应该遵循良好的规范. 遵循良好的代码规范有利于: 提升程序稳定性, 减少代码隐患, 降低故障率; 增强可扩展性, 大幅提高维护效率; 统一标准, 提升多人协作效率; 方便新人快速上手, 在项目组人员发生变动时保证项

强制:

  • 布局xml优先使用ConstraintLayout, 可以保证无嵌套的情况下完成包括部分控件同时显隐需求在内的99%的布局要求;
  • 不允许使用ScrollView包裹ListView/GridView/ExpandableListVIew等列表View, 复杂多项式列表可以使用多ItemType进行处理;

推荐:

  • 在Activity中显示对话框或弹出浮层时, 尽量使用DialogFragment, 而非Dialog/AlertDialog, 便于随Activity生命周期管理弹窗的生命周期;

进程/线程/消息推送

强制:

  • 存在多进程的情况时, Application中的初始化代码要根据进程分别处理, 避免初始化不必要的业务;
  • 新建线程时, 必须通过线程池的方式, 不允许采用new Thread()的方式;
  • Activity/Fragment中使用Handler时, 必须使用静态内部类+WeakReferences方式或者在onStop中调用handler.removeCallbacksAndMessages;

推荐:

  • 多进程间共享数据使用ContentProvider替代SharedPreferences#MODE_MULTI_PROCESS;

文件/数据库

强制:

  • 使用系统API获取文件路径, 避免手拼字符串, 例: android.os.Environment#getExternalStorageDirectory(), Context#getFilesDir(), 错误示例: File file = new File("/mnt/sdcard/Download/Album", name);
  • 当使用外部存储时, 必须检查外部存储的可用性: Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
  • 数据库Cursor使用之后必须关闭, 以免内存泄漏;

推荐:

SharedPreference仅存储简单数据类型, 不要存储复杂数据, 如json数据/Bitmap编码等;

SharedPreference提交数据时, 尽量使用Editor#apply(), 而非Editor#commit();

图片/动画

强制:

  • 加载大图时必须在子线程中处理, 否则会卡UI;
  • 在Activity.onPause()/onStop()中关闭当前activity正在执行的动画;

推荐:

  • Android图片建议转化为WebP格式, 可以减少APK体积;
  • 动画尽量不要使用AnimationDrawable, 占用非常多内存;
  • 使用ARGB_565代替ARGB_888, 减少内存占用;
  • 当Animation执行结束时, 调用View.clearAnimation()释放相关资源;

安全性

强制:

  1. 上线包必须混淆;
  2. 加解密的秘钥/盐不允许硬编码到代码中, 以防反编译获取;
  3. Https处理时必须校验证书, 不允许直接接受任意证书;
  4. 使用Android的AES/DES/DESede加密算法时, 不要使用默认的加密模式ECB, 应显示指定使用CBC/CFB加密模式;
  5. 禁止把敏感信息打印到log中;
  6. 在应用发布时必须确保android:debuggable为false;
  7. 必须利用X509TrustManager子类中的checkServerTrusted函数效验服务器端证书的合法性,
  8. 必须将android:allowbackup属性设置为false, 防止adb backup导出应用数据。 

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读