android开发用异步任务解决新线程不能更新UI组件的问题

  次阅读 来源:互联网(转载协议) 2016-01-19 12:32 我要评论(0)

Android的UI线程主要负责处理用户的按键事件、用户触屏事件及屏幕触屏绘图事件等,因此开发者的其他操作不应该、也不能阻塞UI线程,不要在UI线程执行一些耗时操作。

AsyncTask<>是一个抽象类,通常用于被继承,继承AsyncTask时需要指定如下三个泛型参数。

AsyncTask是抽象类,它定义了如下三种类型:

1、Params:启动任务执行的输入参数的类型;

2、Progress:后台任务完成的进度值的类型;

3、Result:后台执行任务完成后返回值的类型。

使用AstncTask只要如下三步即可:

1、创建AsyncTask的子类,并为三个泛型参数指定类型,如果某个泛型不需要指定类型,可以指定为void.

2、根据需要,实现AsyncTask的提供的方法。

3、调用AsyncTask子类实例的execute(Params... params)开始执行耗时任务。

代码

```package com.example.asynctasktest;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLConnection;

import android.os.AsyncTask;

import android.os.Bundle;

import android.view.View;

import android.widget.TextView;

import android.app.Activity;

import android.app.ProgressDialog;

import android.content.Context;

public class MainActivity extends Activity {

private TextView show;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

show = (TextView) findViewById(R.id.main_text);

}

public void download(View source) throws MalformedURLException{

DownTask task = new DownTask(this);

task.execute(new URL("http://www.crazyit.org/ethos.php"));

}

class DownTask extends AsyncTask<URL, Integer, String>{

ProgressDialog pdialog;

int hasRead = 0;

Context mContext;

public DownTask(Context ctx){

mContext = ctx;

}

//后台线程将要完成的任务

@Override

protected String doInBackground(URL... params) {

StringBuilder sb = new StringBuilder();

try {

//网络连接

URLConnection conn = params[0].openConnection();

BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));

String line = null;

while((line = br.readLine()) != null){

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 第一批国家重点研发计划公布,旷视科技开启“五年行动”

    第一批国家重点研发计划公布,旷视科技开启“五年行动”

  • 让AI触手可及  Qualcomm携手创通联达推出全新终端侧AI开发套件

    让AI触手可及 Qualcomm携手创通联达推出全新终端侧AI开发套件

  • 长虹新款智能语音空调,告诉你空调也能玩Siri

    长虹新款智能语音空调,告诉你空调也能玩Siri

  • 品友互动为Digital Travel APAC2018 唯一受邀中国AI企业

    品友互动为Digital Travel APAC2018 唯一受邀中国AI企业

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...