初学AsyncTask
来源:互联网 发布:阿里云新手礼包在哪里 编辑:程序博客网 时间:2024/06/05 06:43
AsyncTask必须执行的方法:
1.doInBackground(Params…);//耗时操作
2.onPostExecute(Result) ;//耗时操作执行完成后调用
可选方法:
1.onPreExecute() ;//耗时操作执行之前调用
2.onProgressUpdate(Progress…) ;//调用publishProgress后调用
3.onCancelled() ;//myAsyncTask.cancel(true); 时调用
MainActivity.java
package com.example.tetst0104;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ProgressBar;import android.widget.TextView;public class MainActivity extends Activity { TextView tv; ProgressBar pb; Button bt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { tv = (TextView) findViewById(R.id.textView01); pb = (ProgressBar) findViewById(R.id.progressBar02); bt = (Button) findViewById(R.id.button03); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { MyAsyncTask myAsyncTask = new MyAsyncTask(tv,pb); myAsyncTask.execute(1000); bt.setClickable(false); } }); }}
NetOperator.java
package com.example.tetst0104;public class NetOperator { public void operator() { try { //休眠1秒 Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } }}
MyAsyncTask.java
package com.example.tetst0104;import android.os.AsyncTask;import android.widget.ProgressBar;import android.widget.TextView;public class MyAsyncTask extends AsyncTask<Integer, Integer, String> { TextView tv ; ProgressBar pb; public MyAsyncTask(TextView tv, ProgressBar pb) { this.tv = tv; this.pb = pb; } /** * 异步执行前调用 */ @Override protected void onPreExecute() { tv.setText("开始异步"); } /** * 处理后台耗时操作 * @param params 为 AsyncTask<参数,参数,参数>的第一个参数 * 返回值String 为 AsyncTask<参数,参数,参数>的第三个参数 */ @Override protected String doInBackground(Integer... params) { //网络连接时 可以传入URL 即 //AsyncTask<String, Integer, String> //doInBackground(String... params) NetOperator operator = new NetOperator(); int i = 0; for (i=10;i<=100;i+=10) { operator.operator(); publishProgress(i); } return i+params[0]+""; } /** * 耗时操作执行完后执行 * @param result 为 doInbackground 的返回值 */ @Override protected void onPostExecute(String result) { tv.setText("异步完成"+result); } /** * 调用publichProgress()时调用 * @param values 为AsyncTask<参数,参数,参数>的第二个参数 */ @Override protected void onProgressUpdate(Integer... values) { pb.setProgress(values[0]); }}
转载于:http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html#commentform
0 0
- 初学AsyncTask
- AsyncTask初学(一)
- Android初学习 - AsyncTask的使用
- Android初学习 - AsyncTask的用法总结
- Android初学习 - AsyncTask的一些介绍I
- Android初学习 - AsyncTask的一些介绍II
- AsyncTask
- ASyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- AsyncTask
- Struts2 集成 sitemesh配置
- Android中无返回值的页面跳转
- poj--3278
- ArcGIS教程:了解坡度
- AtomicInteger
- 初学AsyncTask
- eclipse最有用快捷键整理 by 戎码一生
- 通过Smart HTTP提供代码下载/上传服务
- Html5添加audio音频播放器插件教程
- Android:Intent
- Python学习笔记(1)
- C# 鼠标点击任务栏图标软件还原或最小化
- Anroid 数据持久化方案
- 那些年我们一起追过的缓存写法(一)