android对handler及asynctask的一个例子
来源:互联网 发布:linux编程基础 编辑:程序博客网 时间:2024/06/05 04:18
Android子线程更新UI主线程方法之Handler
Android之多线程工作-AsyncTask与handler
详解Android中AsyncTask的使用
Android线程和Handler基础入门
Android中Handler的机制
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="多线程demo。"/> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="async Task实时更新进度条" android:id="@+id/btn_async_task"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="取消任务" android:id="@+id/btn_cancel_async_task"/> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="执行handler任务2" android:id="@+id/btn_handler"/> </LinearLayout><ProgressBar android:layout_width="fill_parent" android:layout_height="wrap_content" android:progress="0" android:max="100" android:id="@+id/progress_bar_1" style="?android:attr/progressBarStyleHorizontal"/><TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tips_1"/></LinearLayout>
package com.example.MyStudyAndroid;import android.app.Activity;import android.content.Intent;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.ProgressBar;import android.widget.TextView;public class ThreadDemo extends Activity { private static final String TAG="thread demo"; private Button btn_async_task; private ProgressBar progressBar_1; private TextView tips_1; private Button btn_cancel_async_task; private Task1 myTask; private Button btn_handler; private Handler handler=new Handler(); //--耗时的操作。 Runnable longOperation=new Runnable() { @Override public void run() { handler.post(new Runnable() { @Override public void run() { tips_1.setText("开始执行任务2"); } }); handler.postDelayed(new Runnable() { @Override public void run() { tips_1.setText("这里已经任务2完成了。"); } },5000); } }; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.thread_demo); initUI(); initEvents(); } private void initUI(){ btn_async_task=(Button)findViewById(R.id.btn_async_task); progressBar_1=(ProgressBar)findViewById(R.id.progress_bar_1); tips_1=(TextView)findViewById(R.id.tips_1); btn_cancel_async_task=(Button)findViewById(R.id.btn_cancel_async_task); btn_handler=(Button)findViewById(R.id.btn_handler); } private void initEvents(){ btn_async_task.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { myTask=new Task1(); myTask.execute(""); } }); btn_cancel_async_task.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(myTask!=null){ myTask.cancel(true); } } }); btn_handler.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { new Thread(longOperation).start(); } }); } class Task1 extends AsyncTask<String,Integer,String>{ //--onPreExecute方法用于在执行后台任务前做一些UI操作 @Override protected void onPreExecute(){ Log.e(TAG,"task1的onPreExecute开始执行:"); tips_1.setText("开始执行 async task 任务。。。"); } //--doInBackground方法内部执行后台任务,不可在此方法内修改UI @Override protected String doInBackground(String... strings) { try { Thread.sleep(500); publishProgress(10); Thread.sleep(600); publishProgress(22); Thread.sleep(1000); publishProgress(42); Thread.sleep(50); publishProgress(43);; Thread.sleep(250); publishProgress(48); Thread.sleep(1000); publishProgress(68); Thread.sleep(500); publishProgress(78); Thread.sleep(100); publishProgress(80); Thread.sleep(250); publishProgress(85); Thread.sleep(500); publishProgress(95); Thread.sleep(150); publishProgress(98); Thread.sleep(100); publishProgress(100); } catch (Exception ed){ ed.printStackTrace(); } return "执行完毕了吧?啊啊啊。。"; } ////onProgressUpdate方法用于更新进度信息 @Override protected void onProgressUpdate(Integer... values){ progressBar_1.setProgress(values[0]); tips_1.setText(String.valueOf("加载。。。"+values[0]+"%")); } ////onPostExecute方法用于在执行完后台任务后更新UI,显示结果 @Override protected void onPostExecute(String result){ Log.e(TAG,result); tips_1.setText(result); } //onCancelled方法用于在取消执行中的任务时更改UI @Override protected void onCancelled(){ tips_1.setText("取消任务"); progressBar_1.setProgress(0); } }}
0 0
- android对handler及asynctask的一个例子
- android优化(4)及Handler和AsyncTask的区别
- Android开发之Handler机制及AsyncTask的使用
- Android的AsyncTask和Handler
- Android访问网络的常用方式:Handler、AsyncTask简单例子(服务器端+Android端)
- Android访问网络的常用方式:Handler、AsyncTask简单例子(服务器端+Android端)
- Android AsyncTask介绍和一个简单的小例子
- android的Handler 例子
- Android笔记--handler的使用的一个例子
- Android的异步(Thread、Handler、AsyncTask)
- Android中Handler、HandlerThread、AsyncTask的应用
- Android的异步(Thread、Handler、AsyncTask)
- Android AsyncTask与handler(别人的文章)
- Android中Handler、HandlerThread、AsyncTask的应用
- Android的异步(Thread、Handler、AsyncTask)
- android中的asynctask和handler的比较
- Android之Handler与AsyncTask的区别
- Android多线程、Handler和AsyncTask的用法
- 完美实现PC端软件控制手机(无需安装任何APK)(一)
- Android button样式修改
- 前端上传组件Plupload使用指南 与swfupload一样强大
- 判断回文的方法总结
- Android;Share SDK微信分享中遇到的问题以及解决方法
- android对handler及asynctask的一个例子
- Js jq获取select值
- poj 3639 dp
- Gnome的配置参数管理
- 对Memcached使用的总结和使用场景
- block的实现原理
- AMQP机制
- WEB版一次选择多个文件进行批量上传(Plupload)的解决方案
- 详解UML中的关系(泛化、实现、依赖、关联【聚合、组合】)