1:日常中优化有哪些:
优化主要分为UI优化、内存优化、相应优化
UI优化
1、布局控件的选择:主要布局有RelativeLayout,LinearLayout及ConstraintLayout性能比较
结论:RelativeLayout measure过程或执行2次 而LinearLayout在没有Weight的情况下只需要执行一次,ConstraintLayout在层级比较复杂的时候性能体现出来,如果简单的布局就用LinearLayout 如果能用1个RelativeLayout实现就用RelativeLayout,如果层级相对复杂就选择用ConstraintLayout。
2、使用标签<ViewStub><include><merge>标签
3、注意界面代码层级,单个界面绘制层级超过5层就要考虑重新绘制界面 可采用<include>
4、使用TextView的leftDrawabel/rightDrawable代替ImageView+TextView布局
内存优化:
1、遇到Bitmap的时候记得不用时候回收,传递bitmap的时候记得传递地址而不要把bitmap直接当做对象直接通过intent传递
2、使用 静态内部类+WeakReference 代替内部类,如Handler、线程、AsyncTask
在Handelr中使用WeakReference 避免由Handler delay造成的Context destory 而导致的crash
3、使用Thread pool 避免创建过于子线程,同时在Thread完成任务后进行销毁
4、webview和数据库建立连接,在activity销毁或者不用的时候进行移除和销毁
响应优化:
响应优化就是把一些耗时的操作(非UI操作)放入子线程中去完成,因为在Activity中如果5秒未响应会ANR,而在BroadCastReceiver在10秒内未响应会提示ANR,Serve则在20秒未响应出现ANR
剩下的就需要结合Android Studio的monitor进行性能分析,判断在那一块有性能上的问题进行针对性的优化。
网友评论