初学AsyncTask
2016-01-04 12:01
330 查看
AsyncTask必须执行的方法:
1.doInBackground(Params…);//耗时操作
2.onPostExecute(Result) ;//耗时操作执行完成后调用
可选方法:
1.onPreExecute() ;//耗时操作执行之前调用
2.onProgressUpdate(Progress…) ;//调用publishProgress后调用
3.onCancelled() ;//myAsyncTask.cancel(true); 时调用
MainActivity.java
NetOperator.java
MyAsyncTask.java
转载于:http://www.cnblogs.com/devinzhang/archive/2012/02/13/2350070.html#commentform
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
相关文章推荐
- Filestream/Windows Share导致Alwayson Failover失败
- PHP在线书签系统分享
- ArcGIS教程:了解坡度
- How to create a Maven web app and deploy to Tomcat - fast
- AtomicInteger
- poj--3278
- SVM学习笔记(二)----手写数字识别
- Android:Activity:生命周期
- Struts2 集成 sitemesh配置
- [转]MySQL 5.7 新特性大全和未来展望
- JQuery调用iframe子页面函数/对象的方法
- java.net.UnknownHostException
- Android中无返回值的页面跳转
- 字符串转换成整数
- java中判断一个字符串是否“都为数字”和“是否包含数字”和“截取数字”
- ntp 同步网络时间
- [leetcode] 229. Majority Element II 解题报告
- Inbox (100500)
- laravel安装redis拓展
- AndroidStudio介绍,代理配置,特性,技巧及从eclipse迁移到as