Android AsynTask 异步线程处理讲解与代码测试
2014-11-05 02:03
218 查看
android中的主要UI线程,最好不要包括太耗时的操作,否则会让该线程阻塞,所以我们就需要将这些耗时的操作放在其他地方执行,而又与主要UI线程有一定关联。androidSDK提供了几种将操作从主UI线程移除的方法,这里主要介绍两种:1.使用AsyncTask类;2.使用标准Thread类
今天我们说说AsynTask
测试代码:
测试效果图:
![](http://img.blog.csdn.net/20141105020413688?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanNwcGluZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
测试数据打印结果:
![](http://img.blog.csdn.net/20141105020435637?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanNwcGluZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
xml布局文件:
AsynTask在做一些长时间耗时的操作或者网络操作、访问登录注册接口之类的,都很适用,而且使用相当简便~~
今天我们说说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 { @Override protected 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() { } @Override protected 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; } @Override protected void onProgressUpdate(Integer... values) { TextView text = (TextView)findViewById(R.id.textview); text.setText("加载中..."+values[0]+"%"); Log.d("加载数据的打印进度:", ""+values[0]+"%"); } @Override protected 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在做一些长时间耗时的操作或者网络操作、访问登录注册接口之类的,都很适用,而且使用相当简便~~
相关文章推荐
- Android线程之异步消息处理机制(一)
- 线程相关——HandlerThread、IntentService、ResultReceiver:结果接收者、AsyncTask:异步任务、Android中处理线程间通信的方式
- android异步消息处理线程
- Android线程之异步消息处理机制(二)——Message、Handler、MessageQueue和Looper
- Android解析异步消息处理机制,Handler原理(第二行代码 10.2.3)
- Android多线程编程(观第一行代码2随记)ps:涉及异步消息处理机制以及基于它的封装AsyncTask
- Android 自动化测试 Espresso篇:异步代码测试
- Android:在子线程中更新UI,解析异步消息处理机制(Handler)
- android起始页面与Handler(异步线程处理)
- Android 中 Handler 引起的内存泄露 在Android常用编程中,Handler在进行异步操作并处理返回结果时经常被使用。其实这可能导致内存泄露,代码中哪里可能导致内存泄露,又是如何
- 在你的服务器端代码中使用线程和创建异步处理
- Android异步任务处理之Thread线程
- 黑马程序员-多线程-在android开发中经常会遇到从子线程切换到主线程,但是频繁地切换会使代码变得很臃肿,也不好维护,想请教一下各位大牛都是怎么处理的?
- 全面总结Android中线程的异步处理方式
- RxJava + httpURLConnectionde 的简单测试demo,可以拿来处理一般的android访问网络的线程问题
- Android--线程与异步消息处理机制
- Android异步消息处理线程机制
- android 异步消息处理线程
- Android异步消息处理线程之----Looper+MessageQueue+Handler
- Android系统中异步消息处理线程机制的理解