android的性能优化

高效的利用线程,在后台取消一些线程的操作


APP默认所有的操作都是在UI线程中进行的,导致程序的响应速度受到影响,严重的会产生卡顿,ANR甚至程序崩溃的现象。

最高效的解决办法是通过开辟子线程来进行耗时操作(如:网络请求,数据库操作或者复杂的计算等),通过AsyncTask或通过IntentService来创建后台操作。

如果选择使用IntentService,它会在需要的时候通过一个工作线程(Intent)来请求启动。

同时,使用IntentService会有以下几点限制:

*这个类不能向UI传递数据,如果要展示运行结果则需要通过Activity

 * 每次只能处理一个请求

 * 每个请求的处理过程都不能中断


2.保持响应防止发生ANR

通过子线程处理耗时操作能够避免用户操作时程序发生ANR(无响应).需要继承AsyncTask并且实现其中的doInBackground()方法。

也可以通过创建一个Thread类或者HandleThread类来进行线程操作,但这样也会导致程序响应速度变慢,因为默认的线程优先级与主线程的优先级是一样的,除非自己设置线程优先级.


3.在线程中初始化查询操作

当查询做操在后台进行时,数据的展示也不是即时的,但是可以通过CursorLoader对象来加快后台处理速度,而且不会影响用户与Activity之间的互动.

当使用这个对象后,你的APP会为ContentProvider初始化一个后台线程来处理数据,处理完后会把结果返回给调用了这个对象的Activity.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值