逼迫:
- 机关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()开释相干资源;
安详性
逼迫:
- 上线包必需夹杂;
- 加解密的秘钥/盐不应承硬编码到代码中, 以防反编译获取;
- Https处理赏罚时必需校验证书, 不应承直接接管恣意证书;
- 行使Android的AES/DES/DESede加密算法时, 不要行使默认的加密模式ECB, 应表现指定行使CBC/CFB加密模式;
- 榨取把敏感信息打印到log中;
- 在应用宣布时必需确保android:debuggable为false;
- 必需操作X509TrustManager子类中的checkServerTrusted函数效验处事器端证书的正当性,
- 必需将android:allowbackup属性配置为false, 防备adb backup导出应用数据。
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|