Android多线程--AsyncTask
来源:互联网 发布:wind万得资讯的数据库 编辑:程序博客网 时间:2024/06/17 20:26
安卓中开启多线程的博客在这里
Android多线程–Handler
这里只讲解一下AsyncTask
AsyncTask
- 其实AsyncTask就是用安卓中的消息处理机制进行封装好的一个类,可以在其中特定的方法中修改ui界面
- 主线程逻辑代码
- 主线程中,仅仅写了一个点击按钮,同时开启一个AsyncTask的任务,并无其他复杂的操作
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button button; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { button= (Button) findViewById(R.id.button); button.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.button: new UpdateTask(button,getApplicationContext()).execute(); break; } }}
- 下面我们来看一下重点,我们自己继承自AsyncTask的类中的代码逻辑
public class UpdateTask extends AsyncTask<Void,Integer,Boolean> { private Button button; private Context context; public UpdateTask(Button button,Context context) { this.button = button; this.context=context; } //这个方法会在后台任务开始之前调用,进行一些界面的初始化 protected void onPreExecute() { super.onPreExecute(); Toast.makeText(context, "我开始了", Toast.LENGTH_SHORT).show(); button.setText("我开始啦"); } //开启的新的子线程,用户后台中执行耗时的任务 protected Boolean doInBackground(Void... params) { int count=0; while(true){ count++; publishProgress(count); try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } if (count>=100){ break; } } return true; } //当后台任务调用了publishProgress方法后,调用此方法,,可以对UI更新 protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); button.setText(values[0]+""); } //任务结束的时候会发生调用,用来进行一些界面的更新 protected void onPostExecute(Boolean aBoolean) { super.onPostExecute(aBoolean); if (aBoolean) { Toast.makeText(context, "Done", Toast.LENGTH_SHORT).show(); button.setText("我结束啦"); } }}
- 效果图
0 0
- AsyncTask android多线程
- android多线程之AsyncTask
- Android--多线程之AsyncTask
- Android 多线程-----AsyncTask详解
- Android - 多线程 - AsyncTask
- android多线程之AsyncTask
- Android 多线程-----AsyncTask详解
- Android 多线程-----AsyncTask详解
- Android 多线程-----AsyncTask详解
- Android 多线程-----AsyncTask详解
- Android 多线程-----AsyncTask详解
- Android 多线程-----AsyncTask详解
- android 多线程1:AsyncTask
- Android 多线程AsyncTask详解
- Android 多线程-----AsyncTask详解
- Android 多线程-----AsyncTask详解
- Android 多线程-----AsyncTask详解
- android多线程之AsyncTask
- 自定义组合控件--来自布局
- inline函数和一般的函数有什么不同
- javascript正则表达式分组-捕获性分组/非捕获性分组/正则前瞻
- Remove Duplicates from Sorted List
- leetCode 20 Valid Parentheses
- Android多线程--AsyncTask
- (WPF)通知栏图标和右键菜单
- c++作业3
- 利用 fusioncharts-suite-xt 完成数据的统计图显示
- 我的第一篇CSDN博客——Redis集群安装与配置1
- NYOJ-24 素数距离问题
- HDU-1161-Eddy's mistakes
- nginx学习记录
- 我转我转我转:实现一个函数翻转字符串