Handler类Word文件下载.docx

上传人:b****4 文档编号:7901652 上传时间:2023-05-09 格式:DOCX 页数:9 大小:16.31KB
下载 相关 举报
Handler类Word文件下载.docx_第1页
第1页 / 共9页
Handler类Word文件下载.docx_第2页
第2页 / 共9页
Handler类Word文件下载.docx_第3页
第3页 / 共9页
Handler类Word文件下载.docx_第4页
第4页 / 共9页
Handler类Word文件下载.docx_第5页
第5页 / 共9页
Handler类Word文件下载.docx_第6页
第6页 / 共9页
Handler类Word文件下载.docx_第7页
第7页 / 共9页
Handler类Word文件下载.docx_第8页
第8页 / 共9页
Handler类Word文件下载.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Handler类Word文件下载.docx

《Handler类Word文件下载.docx》由会员分享,可在线阅读,更多相关《Handler类Word文件下载.docx(9页珍藏版)》请在冰点文库上搜索。

Handler类Word文件下载.docx

  *这个时候我们需要把这些耗时的操作,放在一个子线程中,因为子线程涉及到UI更新,Android主线程是线程不安全的,

  *也就是说,更新UI只能在主线程中更新,子线程中操作是危险的。

这个时候,Handler就出现了,来解决这个复杂的问题,

  *由于Handler运行在主线程中(UI线程中),它与子线程可以通过Message对象来传递数据,

  *这个时候,Handler就承担着接受子线程传过来的(子线程用sedMessage()方法传弟)Message对象(里面包含数据),把这些消息放入主线程队列中,配合主线程进行更新UI。

  *Handler一些特点:

  *Handler可以分发Message对象和Runnable对象到主线程中,每个Handler实例,都会绑定到创建他的线程中(一般是位于主线程),

  *它有两个作用:

(1):

安排消息或Runnable在某个主线程中某个地方执行,

(2)安排一个动作在不同的线程中执行

  *Handler中分发消息的一些方法

  *post(Runnable)

  *postAtTime(Runnable,long)

  *postDelayed(Runnable,long)

  *sendEmptyMessage(int)

  *sendMessage(Message)

  *sendMessageAtTime(Message,long)

  *sendMessageDelayed(Message,long)

  *以上post类方法允许你排列一个Runnable对象到主线程队列中,当需要在不同于主UI线程中执行则需要配合HandlerThread进行使用:

  *HandlerThreadhandlerThread=newHandlerThread("

myHandlerThread"

);

  *handlerThread.start();

  *handler=newHandler(handlerThread.getLooper());

*sendMessage类方法,允许你安排一个带数据的Message对象到队列中,等待更新.

  *@authorxiaoshuang

  *

  */

  publicclassHandlerActivityextendsActivity{

  privateTextViewtextView;

  privateMyHandlermyHandler;

  privateButtonbutton;

  privateProgressBarprogressBar;

  privateMyThreadm=newMyThread();

  /**Calledwhentheactivityisfirstcreated.*/

  @Override

  publicvoidonCreate(BundlesavedInstanceState){

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  textView=(TextView)findViewById(R.id.text);

  button=(Button)findViewById(R.id.startButton);

  progressBar=(ProgressBar)findViewById(R.id.bar);

  progressBar.setMax(100);

  button.setOnClickListener(newView.OnClickListener(){

  publicvoidonClick(Viewarg0){

  myHandler=newMyHandler();

  newThread(m).start();

  System.out.println("

onCreate--TheThreadis:

"

+Thread.currentThread().getId());

  }

  });

  //在对UI进行更新时,执行时所在的线程为主UI线程

  classMyHandlerextendsHandler{//继承Handler类时,必须重写handleMessage方法

  publicMyHandler(){

  publicMyHandler(Looperl){

  super(l);

  publicvoidhandleMessage(Messagemsg){//执行接收到的通知,此时执行的顺序是按照队列进行,即先进先出

Handler--TheThreadIdis:

  super.handleMessage(msg);

  Bundleb=msg.getData();

  StringtextStr0=textView.getText().toString();

  StringtextStr1=b.getString("

textStr"

  HandlerActivity.this.textView.setText(textStr0+"

+textStr1);

//更改TextView中的值

  intbarValue=b.getInt("

barValue"

HandlerActivity.this.progressBar.setProgress(barValue);

//更改进度条当中的值

  //该线程将会在单独的线程中运行

  classMyThreadimplementsRunnable{

  inti=1;

  publicvoidrun(){

  while(i<

11){

Thread--TheThreadIdis:

  try{

  Thread.sleep(1000);

  }catch(InterruptedExceptione){

  e.printStackTrace();

  Messagemsg=newMessage();

  Bundleb=newBundle();

  b.putString("

"

线程运行"

+i+"

次"

  b.putInt("

i*10);

  i++;

  msg.setData(b);

  HandlerActivity.this.myHandler.sendMessage(msg);

//通过sendMessage向Handler发送更新UI的消息

  /***

  *Handler的定义:

*Handler一些特点:

  *sendMessage类方法,允许你安排一个带数据的Message对象到队列中,等待更新.

  HandlerActivity.this.progressBar.setProgress(barValue);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 图表模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2