Android线程和线程池(一)
来源:互联网 发布:windows telnet 漏洞 编辑:程序博客网 时间:2024/06/05 11:03
**
AsyncTask 轻量级的异步任务类
**
底层用到了线程池,封装了线程池和Handle
方便开发者在子线程更新UI
可以在线程中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新UI
public abstract class AsyncTask<Params, Progress, Result>`
Params表示参数的类型
Progress表示后台任务的执行进度的类型
Result表示后台任务返回结果的类型
4个重要的方法
//主线程中执行.一般用于准备工作 @Override protected void onPreExecute() { super.onPreExecute(); } //线程池中执行,用于执行异步任务 @Override protected Object doInBackground(Object[] params) { return null; } //主线程中执行,当后台任务的执行进度发生改变时此方法会被调用 @Override protected void onProgressUpdate(Object[] values) { super.onProgressUpdate(values); } //主线程中执行,异步任务执行之后,此方法会调用 @Override protected void onPostExecute(Object o) { super.onPostExecute(o); }
使用过程中的一些条件:
1.AsyncTask的类必须在主线程中加载
2.AsyncTask的对象必须在主线程中创建
3.execute方法必须在UI线程调用
4.不要在程序中直接调用四个重要的方法
5.AsyncTask的对象只能执行一次,也就是只能调用一次execute方法,否则回报运行时异常
6.可以通过AsyncTask的executeOnExecutor方法来并行的执行任务
串行与并行
在Android1.6以前AsyncTask是串行执行任务
Android1.6的时候AsyncTask采用在线程池中处理并行任务
Android3.0以后的版本中可以用executeOnExecutor方法来并行的执行任务
HandlerThread
底层直接使用了线程
在run方法中通过Looper.prepare()来创建消息队列,并且通过Loop.loop()来开启消息循环
IntentService
是一种特殊的Service. 可用于执行后台耗时的任务,任务执行后他会自动的停止.由于自身是服务的关系,所以他的优先级比单纯的线程要高很多,比较适合执行一些高优先级的后台任务
封装了HandlerThread和Handler
1 0
- Android的线程和线程池(一)
- Android线程和线程池(一)
- Android线程和线程池(一)--AsyncTask
- Android 线程和线程池
- Android线程和线程池
- Android 线程和线程池
- Android线程和线程池
- Android线程和线程池
- Android 线程和线程池
- Android线程和线程池
- Android(线程一) 线程
- android 线程池(一)
- Android线程与线程池(一)
- Java线程和线程池(一)
- 总结:Android中的线程,线程池相关(一)---线程
- Android线程和线程池(四)--Android线程池
- [转载] Android(线程一) 线程
- Android多线程(一)线程池
- mysql/oracle----约束
- JavaScript基础
- hdu 2823 The widest road (旋转卡壳求两凸包的最近距离)
- APK拆分配置
- Sqoop简介与实例
- Android线程和线程池(一)
- js数组操作
- 修改Linux系统日期与时间date clock
- HTML5开发 移动Web App阅读器
- php环境搭建,小白helloworld初试
- 移除空白文本节点(在非IE浏览器中,换行符被当作空白文本节点)
- STM32F的RTC
- Goertzel算法简介
- 并发服务器