Android AsynTask 异步线程处理讲解与代码测试
来源:互联网 发布:中国乘用车8月销量数据 编辑:程序博客网 时间:2024/06/04 19:09
android中的主要UI线程,最好不要包括太耗时的操作,否则会让该线程阻塞,所以我们就需要将这些耗时的操作放在其他地方执行,而又与主要UI线程有一定关联。androidSDK提供了几种将操作从主UI线程移除的方法,这里主要介绍两种:1.使用AsyncTask类;2.使用标准Thread类
今天我们说说AsynTask
测试代码:
package com.example.engineerjspasyntask;/** * AsynTask Test * @author Engineer-Jsp * @date 2014.10.27 * * */import android.os.AsyncTask;import android.os.Bundle;import android.app.Activity;import android.util.Log;import android.view.Menu;import android.widget.ProgressBar;import android.widget.TextView;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar);EngineerJspAsynTask task = new EngineerJspAsynTask();task.execute();}private class EngineerJspAsynTask extends AsyncTask<Void, Integer, Integer>{ public EngineerJspAsynTask() {}@Overrideprotected Integer doInBackground(Void... params) {int i =0;while(i<100){try {Thread.sleep(500);i++;if(1%1==0){publishProgress(i);}} catch (Exception e) {}}return i;}@Overrideprotected void onProgressUpdate(Integer... values) {TextView text = (TextView)findViewById(R.id.textview);text.setText("加载中..."+values[0]+"%");Log.d("加载数据的打印进度:", ""+values[0]+"%");}@Overrideprotected void onPostExecute(Integer result) {TextView text = (TextView)findViewById(R.id.textview);text.setText("加载完成"+result.toString()+"%"+"!");Log.d("加载数据的打印进度:", result.toString()+"%");}} }
测试效果图:
测试数据打印结果:
xml布局文件:
<?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" android:orientation="vertical" > <ProgressBar android:id="@+id/progressBar" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /> <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/progressBar" android:layout_centerHorizontal="true" android:text="TextView" /> </RelativeLayout>
AsynTask在做一些长时间耗时的操作或者网络操作、访问登录注册接口之类的,都很适用,而且使用相当简便~~
0 0
- Android AsynTask 异步线程处理讲解与代码测试
- android异步任务 AsynTask
- 【AsynTask】android异步任务详解 AsynTask
- android异步任务详解 AsynTask
- android异步任务详解 AsynTask
- Android异步任务详解 AsynTask
- android异步任务详解 AsynTask
- android异步任务详解 AsynTask
- android异步任务详解 AsynTask
- Android异步任务详解 AsynTask
- android异步任务详解 AsynTask
- android异步任务详解 AsynTask
- android异步任务详解 AsynTask
- android异步任务详解 AsynTask
- android异步任务详解 AsynTask
- android异步任务详解 AsynTask
- android异步任务详解asyntask
- android异步任务详解 AsynTask
- kqfs 0FAeKcheap burberry s7P9 Ops
- io流的小事例
- CGAffineTransformMakeTranslation的使用问题
- topcoder Single Round Match 457 Round 1 - Division I, Level Two baTheHexagonsDivOne
- Google-APAC2015-"Password Attacker"
- Android AsynTask 异步线程处理讲解与代码测试
- SPPS java 创建template
- 去哪兒網服務電話號碼是多少-百度百科
- 面经
- 去哪兒網官方電話號碼是什麽-百度百科
- boost环境搭建
- 高效SQL语句必杀技
- boost多线程简单实现
- iOS判断一个点是否在一个区域内