首页 > 其他分享 >android AsyncTask入门

android AsyncTask入门

时间:2023-02-28 11:32:19浏览次数:29  
标签:pb 入门 tv doInBackground AsyncTask 线程 import android


要使用这个东西,要new AsyncTask. 此时相当与启动个新线程. 你需要重载doInbackground 这个东西相当与run 方法。开始执行后台操作.

操作完了后 onPostExecute这个函数更新画面.

大家喜欢例子.那来笆.

package com.nuaa;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ProgressBar;
import android.widget.TextView;public class Main extends Activity {
/** Called when the activity is first created. */
ProgressBar pb;
TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
pb=(ProgressBar)findViewById(R.id.pb);
tv=(TextView)findViewById(R.id.tv);
updatePb uptask=new updatePb();
uptask.execute(100);
//后面的按定义是线程休息时间,即每100MS,进度加1
}
class updatePb extends AsyncTask<Integer,Integer,String>{
//后面尖括号内分别是参数(例子里是线程休息时间),进度(publishProgress用到),返回值 类型
protected String doInBackground(Integer... params) {
// TODO Auto-generated method stub
for(int i=0;i<=100;i++){
pb.setProgress(i);
publishProgress(i,5);
try {
Thread.sleep(params[0]);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return "谢谢使用!";
}
protected void onProgressUpdate(Integer... progress) {
tv.setText(String.valueOf(progress[0]));
//这个函数在doInBackground调用publishProgress时触发,虽然调用时只有一个参数
//但是这里取到的是一个数组,所以要用progesss[0]来取值
//第n个参数就用progress[n]来取值
}
protected void onPostExecute(String result) {
setTitle(result);
//doInBackground返回时触发,换句话说,就是doInBackground执行完后触发
//这里的result就是上面doInBackground执行后的返回值,所以这里是"执行完毕"
}
}
}

有这个例子,有这个注释.因该很清楚了.清楚什么啊.

清楚里面的过程吗?清楚线程池如何管理的吗?清楚onPressupdate onpostExecute 为什么跑在ui 线程里吗?

标签:pb,入门,tv,doInBackground,AsyncTask,线程,import,android
From: https://blog.51cto.com/u_15070324/6090638

相关文章

  • Android 反编译资料整理
    Madeby李文栋2010-12-13 Monday于北京一、反编译流程图​​​​二、工具使用方法(命令)准备工作假设我的工作目录为$AndroidDecompile,首先要将system.img中(或......
  • 【spring笔记】Mybaties入门
    1、官方文档https://mybatis.org/mybatis-3/zh/getting-started.html2、搭建一个Mybatis实例2.1首先看配置文件mybatis-config.xml这里面包括获取数据库连接实例的数......
  • (原创)【B4A】一步一步入门05:控件、公有属性、水平锚定、垂直锚定(控件篇01)
    一、前言前面的教程,已经完整讲述了用B4A开发安卓APP从新建项目到编译发布的完整流程。从本篇开始,我们将会从B4A的细节处着手,一步一步掌握B4A。从本篇开始的子系列为“控......
  • open3D快速入门
      Corefeatures核心功能Simpleinstallationviacondaandpip 通过conda和pip简单安装3Ddatastructures  三维数据结构3Ddataprocessingalgorithms ......
  • Golang入门第四天
    面向对象编程匿名字段匿名字段初始化方法值语义与引用语义封装,继承,多态方法值,方法表达式接口接口继承,接口转换空接口通过if实现类型断言通过switch实现类型断......
  • Go语言入门学习
    一.Go语言介绍Go是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go是从2007年末由RobertGriesemer,RobPike,KenThompson主持开发,后来还加入了Ian......
  • Ansible入门教程
    1、环境准备1.1、准备主机这里使用3台主机做为演示#IP地址:192.168.10.15【控制机】hostnamectlset-hostnameansible-control#IP地址:192.168.10.14hostnamectl......
  • Android Studio连接SQLlite
    1.MainActivity.javapackagecom.example.dbproject;importandroid.database.sqlite.SQLiteDatabase;importandroid.view.View;importandroid.widget.Button;importa......
  • 虚幻引擎5 学习 入门 2Day
    今日的学习内容:灯光渲染灯光分类:DirectionalLight定向光源  PointLight点光源  SpotLight聚光灯 RectLight矩形灯 SkyLight天灯光照分移动性光照......
  • 并发多线程学习(三)Java多线程入门类和接口
    1Thread类和Runnable接口上一章我们了解了操作系统中多线程的基本概念。那么在Java中,我们是如何使用多线程的呢?首先,我们需要有一个“线程”类。JDK提供了Thread类和Runn......