Android开发建议

开发安卓程序是件劳心劳力的事,用户体验越来越重要的当今形式逼迫着我们不断提高app性能。踩在巨人的肩膀上,这一篇来扯一扯如何优化我们的app。

1:布局优化

1.1减少布局嵌套的层级,删除无用的group

屏幕信息的显示过程就像是树的层级遍历的过程,先画最底层,然后逐层往上画。那么,树高过大显然是不利于性能的,


1.2include

使用include标签将一个指定的布局文件加到当前的布局文件中。

1.3merge

常与include组合使用,可删除多余的视图组。

1.4viewStep

viewStep大小为零,本身不参与任何的布局和绘制流程。其意义在于可以按需加载所需的布局文件。

<ViewStub  
    android:id="@+id/stub_import"  
    android:inflatedId="@+id/panel_import"  
    android:layout="@layout/progress_overlay"  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:layout_gravity="bottom" />  

stub_import为viewStub的id,panel_import是proress_overlay的跟布局id

((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);  
// or  
View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();  
使用时iewStub会被它内部的布局替换掉。
2:绘制优化:

绘制过程严禁耗时操作,耗时操作会引起页面卡顿,降低体验度。有人说万一有耗时的任务怎么办,后台加载然后异步通知。

3:内存泄漏优化

如静态变量引起的内存泄漏,单例模式引起的内存泄漏,属性动画引起的内存泄漏,handler引起的内存泄漏等。

对于handler引起的内存泄漏,handler,message,messageQueue是连在一起的,如果handler发送的消息未被处理,则handler,消息将一直呆在消息队列中而无法释放。所以这就很坑了 ,如果handler延迟个十分钟再发消息,而activity早早关闭了,handler所在的activity也无法被回收。造成内存泄漏

解决方案:避免使用非静态内部里,使用静态内部类+软引用的方式,详情请查看

4:listView优化

目前listView,GridView,逐渐被recycleView所替代,但不管是何种view,优化的思路不会过时。在与获取视图相关的方法中应尽量避免耗时操作,耗时操作请使用后台加载+异步刷新的方式,可以尝试开启硬件加速。

5:线程优化 

线程池能减少多个线程创建和销毁时的内存开销,同时有效的避免因争抢资源所引起的阻塞现象。池被用来管理内部资源,

关于Android中的线程池,请查看


最后MAT工具是一款强大的内存泄漏分析工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值