在这里小做一下总结,同时也可以加深自己的印象
一、命名规则:
文件命名:
模块+组件+作用;例如module_login_btn_register;
组件命名:
组件+模块+作用;例如声明一个Button btn+module_login_register;
小结:看上去很清晰,但是我觉得还是根据自己习惯来定义比较好,毕竟后续还是自己维护,因此书上也是给出推荐并没有强制要求。
二、基本组件:
1,Activity传值:
相信大部分的人都知道Intent传值它是有数据的大小要求的,超过它传递的最大值时就会出现TransactionTooLargeException异常,
因此当数据量很大的时候最好是不要用Intent的传值,可以用eventbus来代替。
小结:Intent具体最大值多少根据不同厂商的规格制定的,是没有一个准确值这么一说。
2,生命周期以及Activity异常情况
https://www.jianshu.com/p/9844eb905db1
小结:这个连接已经解释的足够详细了,这里就不做小结了
3,显性和隐性需要注意的细节
在android中Intent分显性和隐性,显性只要在主清单文件声明的话一般都不会有错,隐性的则需要通过resolveActivity函数来检验一下当前activity是否存在,如不存在则会抛出ActivityNotFoundException异常
小结:隐性跳转则需要先检测一下,保证程序的健壮性。
4,Service和BroadcastReceiver做耗时操作时
可以用IntentService来做操作,可以有效的避免耗时操作时导致的ui不流畅
5,不要在onDestroy释放所有的资源,配合onstop或者onpause函数结合inFinish来判断;
总结:因为有些耗时操作在onDestroy释放的话可能比较晚。配合使用更佳。
6,onpause不要做太多的耗时操作,因为跳转到下一个activity的时是先调用当前activity的onpause的方法。
总结:如果做在onpause的方法做耗时操作会给用户一种不流畅的感觉
7,不要在Appliction对象中做数据的缓存,会出现NullPointerException。可以使用一些持久化机制对数据进行缓存。
例如:假设当前程序长期处于在后台进程中时,很有可能Appliction会被重新创建,这个时候如果处理不当的话会出现异常。
8,使用toast时写成一个单例的全局的toast。这样可以避免重复被用户点击时一直弹出toast,而不能取消的情况。
9,在adapter中做判断的时候一定要写else这个反之条件,众所周知item会出现复用的情况,如果不写会出现显示错乱问题。
三、UI与布局 :
1,布局时很多时候都需要多个viewgroup嵌套时不要使用LinearLayout 嵌套,要使用RelativeLayout,需求中RelativeLayout会比LinearLayout 更加的容易实现效果,但是如果
是简单的布局的话还是需要用LinearLayout,因为在源码中LinearLayout只是测量了一次,而RelativeLayout测量了多次,测量是需要cpu去做操作的,因此还得看个人的需求来实现。
总结:不过现在完全可以用约束布局来实现啦。已经完全可以不用考虑这些。
2,帧动画慎用
3,使用NestedScrollView去做RecyclerView的嵌套会避免很多问题;
比如:滑动冲突;而且性能会比ScrollView要强很多