AsyncTask简单使用
来源:互联网 发布:术大师淘宝论坛 编辑:程序博客网 时间:2024/05/22 00:55
package com.tyran.ansynctask_demo1;import android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ProgressBar;import android.widget.TextView;import android.widget.Toast;import butterknife.BindView;import butterknife.ButterKnife;import butterknife.OnClick;public class MainActivity extends AppCompatActivity { @BindView(R.id.TV_Main) TextView TVMain; @BindView(R.id.PB_Main) ProgressBar PBMain; @BindView(R.id.BTN_Main) Button BTNMain; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); } @OnClick(R.id.BTN_Main) public void onClick() { PBAsyncTask asyncTask = new PBAsyncTask(); asyncTask.execute(); } class PBAsyncTask extends AsyncTask<Void, Integer, Boolean> { private int progress; //主线程运行 //在异步线程运行前,在主线程做一些准备工作 @Override protected void onPreExecute() { Log.d("PBAsyncTask", "onPreExecute:" + Thread.currentThread().getName() + " TID:" + Thread.currentThread().getId()); super.onPreExecute(); PBMain.setVisibility(View.VISIBLE); progress = 0; } //异步线程运行 //在异步线程里运行一些耗时操作,或者逻辑操作 @Override protected Boolean doInBackground(Void... params) { Log.d("PBAsyncTask", "doInBackground:" + Thread.currentThread().getName() + " TID:" + Thread.currentThread().getId()); while (true) { //模拟处理数据,每500ms,ProgressBar跳动一次 try { if(progress <= 100) { Thread.sleep(500); progress += 10; //publishProgress执行后会回调onProgressUpdate方法,并把参数传递给onProgressUpdate publishProgress(progress); }else { return true; } } catch (InterruptedException e) { e.printStackTrace(); return false; } } } //主线程运行 //通过publishProgress传过来的参数,在主线程操作UI @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); Log.d("PBAsyncTask", "onProgressUpdate:" + Thread.currentThread().getName() + " TID:" + Thread.currentThread().getId()); PBMain.setProgress(values[0]); } //主线程运行 //doInBackground结束后回调,并将doInBackground的返回值传递过来 @Override protected void onPostExecute(Boolean aBoolean) { super.onPostExecute(aBoolean); Log.d("PBAsyncTask", "onPostExecute:" + Thread.currentThread().getName() + " TID:" + Thread.currentThread().getId()); if(aBoolean) { TVMain.setText("Work Finished"); }else { Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_SHORT).show(); } } }}
0 0
- AsyncTask简单使用
- AsyncTask的简单使用
- AsyncTask的简单使用
- AsyncTask的简单使用
- AsyncTask简单使用
- Android AsyncTask 简单使用
- AsyncTask的简单使用
- Android:Asynctask简单使用
- AsyncTask的简单使用
- AsyncTask简单使用
- AsyncTask的简单使用
- 简单使用 AsyncTask
- AsyncTask的简单使用
- AsyncTask的简单使用
- AsyncTask的简单使用
- AsyncTask简单使用
- 简单使用AsyncTask
- AsyncTask的简单使用
- Mysql数据库常用分库和分表方式
- 导入导出excel文件
- EasyDarwin云平台部署实践
- js 各种高宽问题,浏览器高宽问题
- The Linux Programming Interface 09 Process Credentials 进程凭证
- AsyncTask简单使用
- Cesium原理篇:3D Tiles(1)渲染调度
- C++引用与指针
- Android Studio中四个常用的开发插件
- jQuery 动画
- Android局部动态高斯模糊以及侧滑菜单配合高斯模糊
- C#模拟IIS服务器(一)
- C. Dima and Salad
- JSP标签