Androidの多线程之更新ui(Thread+Handler+Message)
2012-11-22 16:03
387 查看
流程:
1.点击开始,显示进度对话框,启动线程,循环发送消息(1-100)
2.更新对话框中的进度,和标题栏的进度
3.到达最大进度值时,关闭对话框,标题栏显示更新完成
解析:
1.在主线程处理handler的消息,更新Ui
2.在其他线程里用主线程的handler不停发送消息
3.线程启动,发送消息
1.点击开始,显示进度对话框,启动线程,循环发送消息(1-100)
2.更新对话框中的进度,和标题栏的进度
3.到达最大进度值时,关闭对话框,标题栏显示更新完成
解析:
1.在主线程处理handler的消息,更新Ui
2.在其他线程里用主线程的handler不停发送消息
3.线程启动,发送消息
package com.bvin.thread; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.TextView; public class MainrActivity extends Activity { /** Called when the activity is first created. */ private Handler handler; private ProgressDialog dialog; private TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.main); setSecondaryProgress(10000); //设置副进度为10000 handler = new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); Log.e("progress:", ""+msg.what); setTitle("更新--"+msg.what); setProgress(msg.what*100); if(msg.what==100){ setProgressBarVisibility(false); // 执行完后使进度条隐藏 dialog.dismiss(); setTitle("更新完成"); } } }; initViews(); } private void initViews(){ dialog= new ProgressDialog(MainrActivity.this); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.setMax(100); Button bt = (Button)findViewById(R.id.bt); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub setProgressBarVisibility(true); dialog.show(); exec(); } }); tv = (TextView)findViewById(R.id.tv); } private void exec(){ new Thread(new Runnable(){ @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<=100;i++){ handler.sendEmptyMessage(i); } } }).start(); } }
相关文章推荐
- Androidの多线程之更新ui(Thread+Handler+Message)
- android 异步处理采用Thread + Handler + Message
- W/MessageQueue: Handler (android.os.Handler) {4241f8f8} sending message to a Handler on a dead thread
- android Thread HandlerThread Looper Message MessageQueue Handler的关系
- Android中的Thread,MessageQueue,Looper,Message,Handler之间的关系图解
- Android Thread,Handler,Loop,Message,HandlerThread总结
- Android消息处理机制——Looper,Handler,Message,MessageQueue,Thread
- Thread和Looper以及Handler和Message详解 Android开发必读
- android thread looper messageQueue handler relationship
- Android : Thread, handler, messagequeue, message, Looper 的交互。
- android Thread HandlerThread Looper Message MessageQueue Handler的关系
- 解析Android消息处理机制 ——HandlerThread/Looper & MessageQueue & Message
- Android消息处理机制:Handler Thread Message Looper
- Android消息处理机制:Handler Thread Message Looper []
- 【java】Handler,Looper,Message,MessageQueue。【android】HandlerThread+Looper
- Android UI编程(4)——Thread、Message、Handler
- Android framework Handler\HandlerThread\Looper\Message\MessageQueue\
- Android消息处理机制:Handler Thread Message Looper []
- Android消息驱动机制Handler+Looper+Thread+MessageQueue
- Thread和Looper以及Handler和Message详解 Android开发必读