安卓开发:AsyncTask异步消息处理机制使用
来源:互联网 发布:五线谱编辑软件 mac 编辑:程序博客网 时间:2024/04/27 08:23
安卓除了有Handler类来处理异步消息处理机制,还有另一套异步消息处理机制。我们可以借助AsyncTask类实现异步消息处理。
查看api可以知道AsyncTask是抽象类,我们需要用子类继承它。
实例情景:有一个Button按钮,点击该按钮,相当于是开启了任务。有一个TextView控件,显示进度【从0开始,每过1s,进度值+10,到100,任务停止】
效果如下:
新建:activity_main.xml:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.aiden.example.MainActivity"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="修改UI" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="当前进度" /></LinearLayout>
新建MainActivity.java:
package com.example.aiden.example;import android.app.Activity;import android.os.AsyncTask;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity implements View.OnClickListener { private Button button; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.activity_main); button = (Button) this.findViewById(R.id.button); textView = (TextView) this.findViewById(R.id.textView); button.setOnClickListener(this); } @Override public void onClick(View v) { if (v == button) { // 调用execute函数,启动任务 new MyAsyncTask().execute(); } } // 第一个参数是指执行该MyAsyncTask传入的参数 // 第二个参数是指执行该MyAsyncTask的进度 // 第三个参数是指执行该MyAsyncTask的结果 public class MyAsyncTask extends AsyncTask<Void, Integer, Boolean> { int percent = 0; @Override // 在执行MyAsyncTask前调用 protected void onPreExecute() { textView.setText("当前进度为:0"); } @Override // 后台任务 protected Boolean doInBackground(Void... params) { try { while (true) { percent += 10; publishProgress(percent); Thread.sleep(1000); if (percent >= 100) break; } } catch (Exception e) { return false; } return true; } @Override // 修改UI protected void onProgressUpdate(Integer... values) { textView.setText("当前进度为:" + percent); } @Override // 执行MyAsyncTask完毕后返回的结果 protected void onPostExecute(Boolean result) { if (result) Toast.makeText(MainActivity.this, "下载完成", Toast.LENGTH_LONG).show(); else Toast.makeText(MainActivity.this, "下载失败", Toast.LENGTH_LONG).show(); } }}
由于代码有详细的注释,可以很好的理解。我们可以把AsyncTask当作是异步消息处理机制【Handler】的封装。
2 0
- 安卓开发:AsyncTask异步消息处理机制使用
- 安卓开发:Handler异步消息处理机制使用
- AsyncTask异步消息处理机制
- AsyncTask 异步消息处理机制
- 安卓开发之异步消息处理机制
- Android异步消息处理机制(3)AsyncTask基本使用
- 异步消息处理机制及AsyncTask的使用
- 【Android】安卓学习笔记之多线程、异步消息处理机制、使用AsyncTask在子线程中对UI 进行操作
- 异步消息处理机制-Handler、AsyncTask
- Android AsyncTask异步处理消息机制
- AsyncTask(异步消息处理机制)
- Android笔记----AsyncTask异步消息处理机制
- 安卓UI线程与异步消息处理机制
- AsyncTask异步处理机制
- android学习笔记——AsyncTask异步消息处理机制简单介绍及使用
- android os;异步消息处理机制:AsyncTask和Handler
- Android异步消息处理机制(4)AsyncTask源码解析
- Android多线程,异步消息处理机制, Thread, AsyncTask 简单总结
- Google搜索
- Are They Equal (25)
- linux配置文件
- Linux下修改mysql默认最大连接数
- 杂七杂八的记录
- 安卓开发:AsyncTask异步消息处理机制使用
- Java中传值和传引用的区别
- MediaPlayer初探一
- android 常见系统广播
- HDU 4508 湫湫系列故事――减肥记I 【完全背包】
- 关于cocos2d-x 资源释放问题
- 解读Paho MQTT源码
- Spring 配置 Apache Commons Logging
- 获取手机联系人