当前位置: 首页 > news >正文

可信赖的深圳网站建设/互联网营销师报考条件

可信赖的深圳网站建设,互联网营销师报考条件,下载京东网上商城,网站建设视频 备份 反代线程分为主线程和子线程,主线程主要处理和界面相关的事情,而子线程往往用于执行耗时操作。我们今天所说的AsyncTask其实是一个轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程…

    线程分为主线程和子线程,主线程主要处理和界面相关的事情,而子线程往往用于执行耗时操作。我们今天所说的AsyncTask其实是一个轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程中更新UI。我们首先了解一下AsyncTask提供的四个核心方法,然后举一个小例子加深一下印象。

    public abstract class AsyncTask<Params,Progress,Result>

    AsyncTask是一个抽象的泛型类,它提供了Params,Progress,Result这三个参数,其中Params:表示参数的类型,Progress:表示后台任务的执行进度的类型,Result:后台任务的返回结果类型。如果确实不需要传递具体的参数,可以用void来代替。

    AsyncTask的四个核心方法:

    1:onPreExecute(),在主线程中执行,在异步任务执行之前次方法会调用,一般用于做一些准备工作。

    2:doInBackground(Params...params),此方法用于异步任务,params参数表示异步任务的输入参数,在此方法中可以通过publicProgress()方法来更新任务的进度        publicProgress方法会调用onProgressUpdate方法。另外此方法需要返回计算结果给onPostExecute方法。

    3:onProgressUpdate(Progress...values),在主线程中执行,当后台任务发生变化时会调用次方法。

    4:onPostExecute(Result result),在主线程中执行,在异步任务完成之后,此方法会被调用,其中,result参数是后台任务返回值,即doInBackground的返回值。

    上面的几种方法,onPreExecute()先执行,接着是doInBackground,之后是onPostExecute方法。


    下面就举一个例子来验证一下这四种方法的使用。

   

   我们创建一个工程,其中有两个类,首先看一下ImageTest.java这个类

package com.example.asynctasktest;import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URLConnection;import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
import java.net.URL;public class ImageTest extends Activity{
private ImageView mImageView;
private ProgressBar mProgressBar;
private static String URL = "http://blog.csdn.net/lyjit";@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.image);
mImageView = (ImageView) findViewById(R.id.image);
mProgressBar = (ProgressBar) findViewById(R.id.progressbar);
new MyAsycnTesk().execute(URL);}class MyAsycnTesk extends AsyncTask<String, Void, Bitmap>{@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressBar.setVisibility(View.VISIBLE);
}
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
//操作UI
mProgressBar.setVisibility(View.GONE);
mImageView.setImageBitmap(result);
}@Override
protected Bitmap doInBackground(String... arg0) {//用作耗时操作使用
//获取传递来的参数   
String url = arg0[0];// 取出对应的URL
Bitmap bitmap = null;
URLConnection connection;
InputStream is;
try {
connection = new URL(url).openConnection();
is = connection.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
//通过decodeStream解析输入流
bitmap = BitmapFactory.decodeStream(bis);
//关闭输入流
is.close();
bis.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//将bitmap作为返回值传递
return bitmap;
}}}



   上面的每个方法我都注释详细了,大家一看就会明白,其中 doInBackground(String... arg0) 中包含的...字样表示参数的数量不定,是一种数组型参数。然后看一下R.layout.image的布局

 

  <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:id="@+id/image"android:layout_width="match_parent"android:layout_height="match_parent"/><ProgressBarandroid:id="@+id/progressbar"android:visibility="gone"android:layout_gravity="center_vertical"android:layout_width="wrap_content"android:layout_height="wrap_content"/></RelativeLayout>



   然后在Activity.java中直接启动ImageTest.java就可以看到效果了。

    最后别忘了添加一下网络的权限:<application android:name="android.permission.INTERNET"/>

   使用AsyncTask时需要注意的问题:

  •  AsyncTask的类必须在主线程中加载
  •  AsyncTask的对象必须在主线程中创建
  •  execute方法必须在UI线程调用
  •  不要在程序中直接调用四个核心的方法。系统的方法不能被调用的!
  •  一个AsyncTask对象只能执行一次,只能调用一次execute方法,否则会报运行异常

  


http://www.jmfq.cn/news/5186971.html

相关文章:

  • 网站专题页面设计/爱站关键词挖掘old
  • 郑州移动网站建设/软文发布平台媒体
  • 建网站 选安全/信息流投放平台
  • 最新的网站建设架构/东莞营销网站建设
  • 本科自考/西安seo服务公司排名
  • 河北企业网站制作/北京债务优化公司
  • 移动应用开发和网站开发/网站制作推广电话
  • 怎么做整人的网站/指数网站
  • 如何在电网网站做备案/淘宝店铺推广方式有哪些
  • 简述网站制作的一般流程/线下推广
  • muse做的网站怎么样/bing搜索
  • 建设银行论坛网站首页/网络服务提供者不履行法律行政法规规定
  • 做lol数据的网站有哪些/搜图片百度识图
  • 网站制作 语言选择怎么做/社群营销怎么做
  • 做家教网站代理/seo优化培训学校
  • 常州市网站制作/网站查询
  • 包头做网站/上海seo网站排名优化公司
  • 高明专业网站建设报价/什么是交换链接
  • 删除的网站做404/对百度竞价排名的看法
  • 网站建设海南/免费网站流量统计工具
  • 网站建设中是什么意思/网络搜索关键词排名
  • 策划设计网站/哪些网站有友情链接
  • 建设监理工程公司网站/自助建站系统平台
  • 阳泉住房建设局网站/域名注册服务商
  • 包头做网站/网页在线生成
  • 免费的微网站哪个好/长尾关键词快速排名软件
  • app网站开发工具下载/潍坊百度快速排名优化
  • 营销性网站建设公司/自己做的网址如何推广
  • 酒店如何做网站/广告最多的网站
  • 北京电商网站排行/情感营销的十大案例