ANDROID_MARS学习笔记_S04_002_用AsyncTask实现异步操作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ANDROID_MARS学习笔记_S04_002_用AsyncTask实现异步操作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4302字,纯文字阅读大概需要7分钟。
内容图文
一、简介
二、代码
1.xml
(1)activity_main.xml
1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:orientation="vertical" 4 android:layout_width="fill_parent" 5 android:layout_height="fill_parent" 6 > 7 <TextView 8 android:id="@+id/textViewId" 9 android:layout_width="fill_parent" 10 android:layout_height="wrap_content" 11 android:text="AsyncTask" 12 /> 1314 <ProgressBar 15 android:id="@+id/progerssBarId" 16 android:layout_width="fill_parent" 17 android:layout_height="wrap_content" 18 style="@android:style/Widget.ProgressBar.Horizontal" 19 android:max="100"/> 20 <Button 21 android:id="@+id/buttonId" 22 android:layout_width="fill_parent" 23 android:layout_height="wrap_content" 24 android:text="开始异步操作" 25 /> 26 <Button 27 android:id="@+id/printButtonId" 28 android:layout_width="fill_parent" 29 android:layout_height="wrap_content" 30 android:text="打印字符串" 31 /> 32 </LinearLayout>
2.java
(1)MainActivity.java
1 package com.async; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.view.View.OnClickListener; 7 import android.widget.Button; 8 import android.widget.ProgressBar; 9 import android.widget.TextView; 10 11 public class MainActivity extends Activity { 1213private Button button = null; 14private Button printButton = null; 15private ProgressBar progressBar = null; 16private TextView textView = null; 1718 @Override 19protectedvoid onCreate(Bundle savedInstanceState) { 20super.onCreate(savedInstanceState); 21 setContentView(R.layout.activity_main); 2223 button = (Button)findViewById(R.id.buttonId); 24 printButton = (Button)findViewById(R.id.printButtonId); 25 progressBar = (ProgressBar)findViewById(R.id.progerssBarId); 26 textView = (TextView)findViewById(R.id.textViewId); 2728 button.setOnClickListener(new OnClickListener() { 29 @Override 30publicvoid onClick(View v) { 31 ProgressBarAsyncTask progressBarAsyncTask = new ProgressBarAsyncTask(textView, progressBar); 32//调用AsyncTask的excuet方法会在新线程中执行33 progressBarAsyncTask.execute(1000);//参数用来给onPostExecute作测试用34 } 35 }); 3637 printButton.setOnClickListener(new OnClickListener() { 38 @Override 39publicvoid onClick(View v) { 40 System.out.println("printButton------->"); 41 } 42 }); 43 } 44 }
(2)ProgressBarAsyncTask.java
1 package com.async; 2 3 import android.os.AsyncTask; 4 import android.widget.ProgressBar; 5 import android.widget.TextView; 6 7 // 生成该类的对象,并调用其execute方法之后 8 // 首先执行的的onPreExecute方法 9 // 其次是执行doInBackground方法 10 // AsyncTask<Integer, Integer, String>三个泛形参数的作用为 11 // (1)Integer:指定doInBackground()的参数类型为Integer 12 // (2)Integer:指定onProgressUpdate()的参数类型为Integer 13 // (3)String:指定doInBackground()的返回类型及onPostExecute()的参数类型为String 14 public class ProgressBarAsyncTask extends AsyncTask<Integer, Integer, String> { 1516private TextView textView = null; 17private ProgressBar progressBar = null; 1819public ProgressBarAsyncTask(TextView textView, ProgressBar progressBar) { 20super(); 21this.textView = textView; 22this.progressBar = progressBar; 23 } 2425//该方法并不运行在UI线程当中,所以在该方法当中,不能对UI当中的控件进行设置和修改 26//主要用于进行异步操作。27 @Override 28protected String doInBackground(Integer... params) { 29 NetOperator netOperator = new NetOperator(); 30int i = 0; 31for(i = 10 ; i <= 100 ; i+=10) { 32 netOperator.operate(); 33//用于发布更新消息34 publishProgress(i); 35 } 36return i + params[0].intValue() + ""; 37 } 3839//该方法运行在UI线程当中,主要用于进行异步操作之前的UI准备工作40 @Override 41protectedvoid onPreExecute() { 42 textView.setText("开始执行异步操作"); 43 } 4445//在doInBackground方法执行结束之后再运行,并且运行在UI线程当中。 46//主要用于将异步任务执行的结果展示给客户47 @Override 48protectedvoid onPostExecute(String result) { 49 textView.setText("异步操作执行结束" + result); 50 } 5152//在doInBackground方法当中,每次调用publishProgress()方法之后,都会触发该方法 53//用于在异步任务执行的过程当中,对用户进行提示,例如控制进度条等54 @Override 55protectedvoid onProgressUpdate(Integer... values) { 56int value = values[0]; 57 progressBar.setProgress(value); 58 } 596061 }
(3)NetOperator.java
1 package com.async; 2 3 // 模拟网络操作 4 public class NetOperator { 5 6 public void operate() { 7 try { 8 Thread.sleep(1000); 9 } catch (InterruptedException e) { 10 e.printStackTrace(); 11 } 12 } 13 }
原文:http://www.cnblogs.com/shamgod/p/5204882.html
内容总结
以上是互联网集市为您收集整理的ANDROID_MARS学习笔记_S04_002_用AsyncTask实现异步操作全部内容,希望文章能够帮你解决ANDROID_MARS学习笔记_S04_002_用AsyncTask实现异步操作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。