Android异步任务简单使用
16lz
2021-01-26
handler发送message实现线程间的通信固然很好,但是代码写起来太麻烦了,因为子线程不能改变UI,需要handler和runnable两个内部类,发来发去的太麻烦,而异步任务就不用管这些,它只有doInBackground是在子线程中的,其他方法全在主线程执行,所以代码写起来要清爽一点
import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//第一个参数是传入的参数,execute(params)是个数组,可以传网址什么的,//中间的参数是onProgressUpdate的类型,相当于表示进度的参数,一般是整数//最后一个参数是返回值类型 class Task extends AsyncTask<String, Integer, String>{@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubsuper.onPreExecute();System.out.println("正在准备执行");}@Overrideprotected void onPostExecute(String result) {// TODO Auto-generated method stubsuper.onPostExecute(result);System.out.println("result是"+result);System.out.println("执行完毕");}@Overrideprotected String doInBackground(String... params) {// TODO Auto-generated method stubSystem.out.println("params是"+params[0]+params[1]);int i=0;while(true){i++;try {Thread.sleep(500);//模仿网络加载} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}publishProgress(i);//将进度传出,调用onProgressUpdate方法,传的是个数组if(i>100){onPostExecute("ok了");break;//必须手动停止}}return "线程停止";}@Overrideprotected void onProgressUpdate(Integer... values) {// TODO Auto-generated method stubSystem.out.println("当前进度是"+values[0]);super.onProgressUpdate(values);}@Overrideprotected void onCancelled(String result) {// TODO Auto-generated method stubsuper.onCancelled(result);}@Overrideprotected void onCancelled() {// TODO Auto-generated method stubsuper.onCancelled();} } Task task = new Task(); task.execute("第一个","第二个");//执行异步任务}
更多相关文章
- SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
- Android和H5交互
- android onCreate(Bundle savedInstanceState)
- Tablayout+Viewpager+Fragment组合使用以及懒加载机制
- Android(安卓)Main thread
- Android---线程间通讯
- Android打电话过程
- Android中OkHttp的使用(详解)
- Memory & Threading. (Android(安卓)Performance Patterns Seaso