Android多线程编程-异步任务总结
来源:互联网 发布:购买的淘宝音乐怎么用 编辑:程序博客网 时间:2024/05/29 18:37
1.主线程里面不能执行耗时的任务,耗时任务都是在子线程里面执行的。
a.开启子线程前,做一些界面初始化的操作。(弹出对话框,在界面上提示用户正在更新,正在获取数据等)
b.开启子线程,在后台执行一个耗时的任务。
c.当后台的任务执行完毕后,发送一个消息,通过主线程更新界面(关闭对话框,弹出吐司,隐藏加载布局等)
2.代码实现
a.定义抽象类
import android.app.Activity;import android.os.Handler;public abstract class MyAsyncTask extends Activity {private Handler handler = new Handler() {public void handleMessage(android.os.Message msg) {// 后台任务执行完了.onPostExecute();};};public void doSomeThing() {onPreExecute();new Thread() {public void run() {doInBackgroud();handler.sendEmptyMessage(0);};}.start();}/** * 后台执行的任务 在子线程中执行 */public abstract void doInBackgroud();/** * 后台任务执行之前的操作,运行在主线程里面的\ */public abstract void onPreExecute();/** * 后台任务执行后的操作,运行在主线程 */public abstract void onPostExecute();}
b.继承抽象类
package cn.itcast.asynctask;import android.app.Activity;import android.app.ProgressDialog;import android.os.Bundle;import android.os.Handler;import android.widget.Toast;public class DemoActivity extends MyAsyncTask {private ProgressDialog pd; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); doSomeThing(); }@Overridepublic void doInBackgroud() {try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}}@Overridepublic void onPreExecute() {pd = new ProgressDialog(this);pd.setMessage("我在执行耗时的操作");pd.show();}@Overridepublic void onPostExecute() {pd.dismiss();Toast.makeText(this, "执行完毕", 0).show();}}
0 0
- Android多线程编程-异步任务总结
- Android 多线程----AsyncTask异步任务详解
- Android多线程异步任务,在主线程中回调
- Android 多线程----AsyncTask异步任务详解
- android多线程编程总结
- Android多线程编程总结
- Android 异步任务 AsyncTask 的使用总结
- Android之AsyncTask异步任务详解总结
- 多线程与异步任务
- 多线程异步任务
- 15-多线程编程(01-AsyncTask异步任务介绍一)
- 15-多线程编程(02-AsyncTask异步任务介绍二)
- Android多线程编程、异步机制(AsyncTask)
- Android多线程与异步任务学习笔记(一)
- Android进阶——多线程和异步任务小结
- 异步任务的总结
- AsyncTask异步任务总结
- Android 多线程编程的总结
- git提交本地分支到远程分支
- 一些没有尝试的android 经典实例
- Poj 3087 + Hdu 1312 + Hdu 1241 + Poj 3278 (基础BFS DFS)
- redi 资料汇总
- slidermenu开源库的相关问题
- Android多线程编程-异步任务总结
- Set框架
- 订单BOM与销售BOM的区别
- XCode5开发使用注意
- .bash_profile和.bashrc的区别
- SSH项目整合简介
- ListView图片的异步加载 -- AsyncImageDownloader
- Palindrome Partitioning II 最少的回文数切割
- soap ui