android的性能优化
2016-03-10 14:15
274 查看
高效的利用线程,在后台取消一些线程的操作
APP默认所有的操作都是在UI线程中进行的,导致程序的响应速度受到影响,严重的会产生卡顿,ANR甚至程序崩溃的现象。
最高效的解决办法是通过开辟子线程来进行耗时操作(如:网络请求,数据库操作或者复杂的计算等),通过AsyncTask或通过IntentService来创建后台操作。
如果选择使用IntentService,它会在需要的时候通过一个工作线程(Intent)来请求启动。
同时,使用IntentService会有以下几点限制:
*这个类不能向UI传递数据,如果要展示运行结果则需要通过Activity
* 每次只能处理一个请求
* 每个请求的处理过程都不能中断
2.保持响应防止发生ANR
通过子线程处理耗时操作能够避免用户操作时程序发生ANR(无响应).需要继承AsyncTask并且实现其中的doInBackground()方法。
也可以通过创建一个Thread类或者HandleThread类来进行线程操作,但这样也会导致程序响应速度变慢,因为默认的线程优先级与主线程的优先级是一样的,除非自己设置线程优先级.
3.在线程中初始化查询操作
当查询做操在后台进行时,数据的展示也不是即时的,但是可以通过CursorLoader对象来加快后台处理速度,而且不会影响用户与Activity之间的互动.
当使用这个对象后,你的APP会为ContentProvider初始化一个后台线程来处理数据,处理完后会把结果返回给调用了这个对象的Activity.
APP默认所有的操作都是在UI线程中进行的,导致程序的响应速度受到影响,严重的会产生卡顿,ANR甚至程序崩溃的现象。
最高效的解决办法是通过开辟子线程来进行耗时操作(如:网络请求,数据库操作或者复杂的计算等),通过AsyncTask或通过IntentService来创建后台操作。
如果选择使用IntentService,它会在需要的时候通过一个工作线程(Intent)来请求启动。
同时,使用IntentService会有以下几点限制:
*这个类不能向UI传递数据,如果要展示运行结果则需要通过Activity
* 每次只能处理一个请求
* 每个请求的处理过程都不能中断
2.保持响应防止发生ANR
通过子线程处理耗时操作能够避免用户操作时程序发生ANR(无响应).需要继承AsyncTask并且实现其中的doInBackground()方法。
也可以通过创建一个Thread类或者HandleThread类来进行线程操作,但这样也会导致程序响应速度变慢,因为默认的线程优先级与主线程的优先级是一样的,除非自己设置线程优先级.
3.在线程中初始化查询操作
当查询做操在后台进行时,数据的展示也不是即时的,但是可以通过CursorLoader对象来加快后台处理速度,而且不会影响用户与Activity之间的互动.
当使用这个对象后,你的APP会为ContentProvider初始化一个后台线程来处理数据,处理完后会把结果返回给调用了这个对象的Activity.
相关文章推荐
- Android下使用JNI笔记
- Android总结篇系列:Android广播机制
- Android相对布局中alignParentRight与父布局Wrap_Content冲突
- Android Studio 1.5.1最新版下载地址
- Android MVP模式理解(附简单登录模块例子)
- Android&iOS视频直播之旅
- mac下编译FFmpeg-Android
- Android中的颜色设置
- android如何实现国际化
- Android 2016新技术
- Android Studio添加assets文件夹
- android获取尺寸相关类
- Android Bundle类
- Android项目:手机安全卫士(9)—— 手机号码归属地查询
- android用SharedPreferences实现登录时记住密码功能
- 对Android系统权限的认识(包含如何获得root权限思路)
- android应用九宫格图案锁
- Android: 启动init.rc 中service的权限问题【转】
- Android init.rc解析【转】
- Android中GridView区中且行间距设置