阿里巴巴 Android 开发手册学习笔记

写个笔记,方便回顾。

Android 资源文件命名与使用

    1.drawable下命名方式采用

        模块名_业务功能描述_控件描述_控件状态限定词 例如:module_login_btn_pressed

    2.颜色命名,之前觉得项目中命名混乱,索性改为color_349132之类避免颜色值重复。看了这里思考了下,还是以模块+逻辑+颜色为好,便于某些好多控件共用一种颜色,需求变更,修改其中一些控件颜色的情况下方便修改。

    3.控件id命名逻辑+后缀缩写 list_lv

    其实命名这回事,定一个规则,项目成员遵守即可,方便开发和维护了。

Android 基本组件

1.Activity之间避免通过intent传递大对象。

2.生命周期成对处理逻辑。onSaveInstanceState()不属于生命周期方法,不保证一定被调用。

3.Activity通过隐式调用,必须通过resolveActivity检查,避免not found异常。

4.Broadcast onReceive()超过10s,可能会ANR。

5.应用内广播推荐本地广播。

6.添加fragment,推荐在onPostResume()或者onResumeFragments()中commit

7.不推荐在Activity#onDestory()中释放资源,执行时机较晚,推荐在onStop中结合标志位来处理

8.不推荐嵌套Fragment

9.隐式intent启动或绑定service,必须搭配setPackage(),消除目标服务的不确定性。

10.广播优先使用本地广播,安全性和高效率

11.当前Activity的onPause执行完才会执行下一个Activity的onCreate,不推荐在onPause做耗时操作

12.Application禁止缓存数据

UI 与布局


1.保持view结构扁平化,view的measure,layout,draw应该被控制在16ms内,否则可能会丢帧。可以使用

Hierarachy Viewer工具或者开发者模式下打开视图边界查看。

2.对话框/浮层推荐使用DialogFragment,便于管理生命周期。

3.禁止在布局时多次为子 view和父view设置相同的背景色,避免重复绘制

4.在需要时刻刷新某一区域的组件时,为避免全局layout刷新建议1.设置固定的view大小的宽高。2.调用view的layout方式修改位置,比如弹幕。3.通过canvas限制刷新区域。4.重写控件的requestLayout()和onSizeChange(),控件大小不改变时,进入requestLayout()时,不调用父控件的requestLayout。

5.不推荐AnimationDrawable,初始化时会加载所有图片到内存。

6.不建议ScrollView中包裹ListView/GridView/ExpandableListView,会把listView所有Item都加载到内存中,过度消耗资源。推荐使用NestedScrollView

进程、线程与消息通信

1.intent不要在组件中传递超过IM的大数据,会OOM或者失败。

2.多进程情况下,注意Application中加载各自进程需要的资源。

3.禁止直接new Thread,使用AsyncTask或者TheadPoolExecutor处理。

4.线程池创建时注意允许线程最大数量和线程存活时间。

文件与数据库

1.文件路径禁止硬编码,使用系统api。

2.使用外部存储时,必须检查外部存储可用性。

3.应用间共享文件推荐使用FileProvider

4.SP提交数据时,推荐使用apply,异步写入磁盘。commit是立刻写入磁盘。

5.多线程操作数据库时,需要使用事务。

6.大量数据写入数据库时,使用事务可以提高效率。

Bitmap、Drawable和动画和安全

1.png必须使用tinypng类似压缩工具处理

2.推荐使用inBitmap重复利用内存空间,避免开辟新内存。

3.使用ARGB_565减少内存占用,注意此时没有透明度。

4.META-INF禁止存放.apk、odex、so等敏感资源,该文件夹没有经过签名,容易被恶意替换。

5.秘钥禁止硬编码到代码中




你可能感兴趣的:(读书)