Android AsyncTask异步处理消息机制
来源:互联网 发布:掷骰子js 编辑:程序博客网 时间:2024/04/25 15:05
AsyncTask
AsyncTask是专门用于完成非UI线程更新UI线程的任务.本质上还是开启新线程执行耗时操作,并将结果返回给UI线程
Asy是一个抽象类,其中有五个主要的方法
* 五个主要方法*
1.onPreExecute() 开启耗时操作前的准备工作
2.doInBackground(String[] params) 耗时操作,此处运行于后台线程池
返回值是onPostExecute的参数值,其中运行 publishProgress(i)方法,此方法会异步调用onProgressUpdate()方法。
3.onProgressUpdate(Integer[] values)更改进度显示
4onPostExecute(String o)最终结果显示
Note:这里有三个参数,第一个参数对应doInBackground放的参数,第二个对应onPregressUpdate的参数,第三个对应OnPostExecute
class MyAsyncTask extends AsyncTask
package com.example.mythread;import android.os.AsyncTask;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.widget.ProgressBar;import android.widget.TextView;/** * Created by 杜春慧 on 2016/4/21. */public class AsyncTaskActivity extends AppCompatActivity { //先写一个异步内部类 有三个参数,注意每个参数的含义 //必须重写doInBackground方法,返回值是onPostExecute的参数值。所有耗时操作写在这里,参数类型是一个数组 //类里面的第一个参数是doInbackground里面的 private ProgressBar progressBar; private TextView textView1; private MyAsyncTask asyncTask; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_asynctask); progressBar = (ProgressBar) findViewById(R.id.progress); textView1 = (TextView) findViewById(R.id.text); //必须在主线程中调用AsyncTask,用execute方法 asyncTask=new MyAsyncTask(); asyncTask.execute(); } public class MyAsyncTask extends AsyncTask<String, Integer, String> { //重写四个方法 理解每个方法的作用和返回值 @Override protected String doInBackground(String... params) { //这个方法里面写耗时操作 int i = 0; while (i < 100) { i++; publishProgress(i); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } return "下载完成"; } @Override protected void onPreExecute() { //AsyncTask启动时的准备工作 super.onPreExecute(); Log.d("准备工作", Thread.currentThread().getName()); // textView.setText("开始下载"); } @Override protected void onPostExecute(String s) { //这个方法的参数值是doInbackground的返回值 textView1.setText(s); } @Override protected void onProgressUpdate(Integer... values) { //更新时的方法 textView1.setText("正在下载:"+values[0]+"%"); progressBar.setProgress(values[0]); } }}
0 0
- Android AsyncTask异步处理消息机制
- Android笔记----AsyncTask异步消息处理机制
- AsyncTask异步消息处理机制
- AsyncTask 异步消息处理机制
- android os;异步消息处理机制:AsyncTask和Handler
- Android异步消息处理机制(3)AsyncTask基本使用
- Android异步消息处理机制(4)AsyncTask源码解析
- Android多线程,异步消息处理机制, Thread, AsyncTask 简单总结
- 异步消息处理机制-Handler、AsyncTask
- AsyncTask(异步消息处理机制)
- Android异步消息处理之AsyncTask
- Android异步消息处理机制
- Android异步消息处理机制
- Android异步消息处理机制
- android异步消息处理机制
- Android异步消息处理机制
- android异步消息处理机制
- Android异步消息处理机制
- 清除火狐浏览器的缓存数据
- 如何成为安卓软件开发工程师?
- 关于java中getInstance()方法
- 3D游戏编程大师技巧第一章 vs2013编译书本源码问题解决方案
- Charles:移动端设备网络抓包
- Android AsyncTask异步处理消息机制
- ZOJ 3609 Modular Inverse【同余问题】
- 对象数组 取值 (双循环取
- android学习笔记——保存Activity的状态
- 如何用运行命令快速打开软件
- 运行pyspark的avro的例子
- 前端学习之《JavaScript DOM 编程艺术》读书笔记(4)
- linux 防火墙 iptables
- ZOJ1648-Circuit Board(判断两直线是否相交)