代码规范个人使用

Android 资源文件命名与使用
1.【推荐】layout/资源文件的命名需带模块前缀。eg:Activity 的 layout 以 module_activity 开头;
2.【推荐】Id 资源原则上以驼峰法命名,View 组件的资源 id 建议以 View 的缩写作为前缀。常用缩写参考书籍。
3.【推荐】图片根据其分辨率,放在不同屏幕密度的 drawable 目录下管理,否则可能在低密度设备上导致内存占用增加,又可能在高密度设备上导致图片显示不够清晰。
Android 基本组件
4.【推荐】Activity#onSaveInstanceState()方法不是 Activity 生命周期方法,也不保证一定会被调用。它是用来在 Activity 被意外销毁时保存 UI 状态的,\LA3q93088677\只能用于保存临时性数据,例如 UI 控件的属性等,不能跟数据的持久化存储混为一谈。持久化存储应该在 Activity#onPause()/onStop()中实行。
5.【强制】避免在 Service#onStartCommand()/onBind()方法中执行耗时操作(因为是在主线程),如果确实有需求,应改用 IntentService \hl2z185189129\或采用其他异步机制完成。
6.【强制】避免在 BroadcastReceiver#onReceive()中执行耗时操作,如果有耗时工作,应该创建 IntentService 完成,而不应该在 BroadcastReceiver 内创建子线程去做。
7.【推荐】 添 加 Fragment 时,确保 FragmentTransaction#commit() 在Activity#onPostResume()或者 FragmentActivity#onResumeFragments()内调用。不要随意使用 FragmentTransaction#commitAllowingStateLoss()来代替,任何commitAllowingStateLoss()的使用必须经过 code review,确保无负面影响。
8.【推荐】对于只用于应用内的广播,优先使用 LocalBroadcastManager 来进行注册和发送,LocalBroadcastManager 安全性更好,同时拥有更高的运行效率。
9.【强制】Activity或者Fragment中动态注册BroadCastReceiver时,registerReceiver()和 unregisterReceiver()要成对出现。
UI 与布局
10.【强制】布局中不得不使用 ViewGroup 多重嵌套时,不要使用 LinearLayout 嵌套,改用 RelativeLayout,可以有效降低嵌套数。要找到那些多余的 View(增加渲染延迟的 view),可以用 Android Studio Monitor里的 Hierarchy Viewer 工具,可视化的查看所有的 view。
11.【推荐】在 Activity 中显示对话框或弹出浮层时,尽量使用 DialogFragment,而非Dialog/AlertDialog,这样便于随Activity生命周期管理对话框/弹出浮层的生命周期。
12.【推荐】文本大小使用单位 dp,View 大小使用单位 dp。对于 TextView,如果在文字大小确定的情况下推荐使用 wrap_content 布局避免出现文字显示不全的适配问题。之所以文本大小也推荐使用 dp 而非 sp,因为 sp 是 Android 早期推荐使用的,但其实 sp 不仅和 dp 一样受屏幕密度的影响,还受到系统设置里字体大小的影响。
13.【强制】禁止在设计布局时多次为子 View 和父 View 设置同样背景进而造成页面过度绘制,推荐将不需要显示的布局进行及时隐藏。
14.【推荐】在需要时刻刷新某一区域的组件时,建议通过以下方式避免引发全局 layout刷新:

  1. 设置固定的 View 大小的宽高,如倒计时组件等;
  2. 调用 View 的 layout 方法修改位置,如弹幕组件等;
  3. 通过修改 Canvas 位置并且调用 invalidate(int l, int t, int r, int b)等方式限定刷新区域;
  4. 通过设置一个是否允许requestLayout的变量,然后重写控件的requestlayout、onSizeChanged 方法,判断控件的大小没有改变的情况下,当进入requestLayout 的时候,直接返回而不调用 super 的 requestLayout 方法。
    进程、线程与消息通信
    15.【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。其他会堆积大量的请求或创建大量的线程;
    16.【推荐】 禁止在多进程之间用 SharedPreferences 共享数据,虽然可以(MODE_MULTI_PROCESS),但官方已不推荐。
    文件和数据库
    17.【推荐】 SharedPreference 提交数据时,尽量使用 Editor#apply() ,而非Editor#commit()。一般来讲,仅当需要确定提交结果,并据此有后续操作时,才使用 Editor#commit()。
    18.【强制】多线程操作写入数据库时,需要使用事务,以免出现同步问题。
    19.【强制】执行 SQL 语句时,应使用\ZpY4s10922199811210322SQLiteDatabase#insert()、update()、delete(),不要使用 SQLiteDatabase#execSQL(),以免 SQL 注入风险。
    Bitmap、Drawable 与动画
    20.【强制】png 图片使用:\C1Y99Ru120i1791q1357800048\ TinyPNG 或者类似工具压缩处理,减少包体积。
    21.【强制】在 Activity#onPause()或\S15S9uH42329501\ Activity#onStop()回调中,关闭当前 activity 正在执行的的动画。
    22.【推荐】在动画或者其他异步任务结束时,应该考虑回调时刻的环境是否还支持业务处理。例如 Activity 的 onStop()函数已经执行,且在该函数中主动释放了资源,此时回调中如果不做判断就会空指针崩溃。
    23.【推荐】使用 inBitmap\24014075dct:187 重复利用内存空间,避免重复开辟新内存。
    24.【推荐】谨慎使用 gif 图片,注意限制每个页面允许同时播放的 gif 图片,以及单个gif 图片的大小。
    25.【强制】禁止使用常量初始化矢量参数构建\ C136WJ19380610\ IvParameterSpec,建议 IV 通过随机方式产生。
    26.【强制】将 \xr0000k5184021\android:allowbackup 属性必须设置为 false,阻止应用数据被导出。
    27.【强制】所有的 Android 基本组件(Activity、Service、BroadcastReceiver、ContentProvider 等)都不应在没有严格权限控制的情况下,将 android:exported 设置为 true。
    List item
    Android实现按下返回键时不进行Activity销毁从而回退到桌面
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
    Intent home = new Intent(Intent.ACTION_MAIN);
    home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    home.addCategory(Intent.CATEGORY_HOME);
    startActivity(home);
    return true;
    }
    return super.onKeyDown(keyCode, event);
    }
    kotlin给集合排序
    倒序: list.sortByDescending { it-> it.age}
    正序:list.sortBy { it-> it.age}
    多条件:list.sortWith(compareBy({ it.age }, { it.name }))
    https://www.jianshu.com/p/af63c25eeafe (二维码扫描Demo实现)
    https://www.jianshu.com/p/09ba4329c470 (摇一摇)
    https://developers.weixin.qq.com/doc/ (微信小程序)
    https://blog.csdn.net/qq_42618969/article/details/81941242(Android常用开源框架)
    https://blog.csdn.net/axi295309066/article/details/56013369(Android常用开源控件)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值