博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android学习笔记——Handler(一)
阅读量:6561 次
发布时间:2019-06-24

本文共 2089 字,大约阅读时间需要 6 分钟。

使用Handler管理线程(转)

步骤:

1. 申请一个Handler对象

Handler handler = new Handler();

2. 创建一个线程

{继承Thread类或者实现Runnable这个接口}

使用Runnable创建一个内部匿名类对象updateThread(要复写run方法)

3. 使用handler的post方法将线程加入到线程队列中

handler.post(updateThread);

4. 使用handler的removeCallbacks方法移出updateThread线程

注意:如果线程从线程队列中出来被执行后,则队列中就不在有线程

因此如果线程在被执行后没有方法将其再次加入到队列中,则无需使用removeCallbacks

线程走出线程队列有两种情况:

一种是被执行,此时要执行run方法

一种是使用removeCallbacks方法,此时线程不被执行,因此不调用run

5. 使用handler的postDelayed方法延时将线程加入到队列中

handler.postDelayed(updateThread,3000)

 

以下代码是MainActivity.java中的代码

package com.example.handler;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {    //声明两个按钮控件    private Button StartButton = null;    private Button EndButton = null;        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //根据控件的ID得到代表控件的对象,并为这两个按钮设置相应的监听器        StartButton = (Button)findViewById(R.id.StartButton);        StartButton.setOnClickListener(new  StartButotnListener());        EndButton = (Button)findViewById(R.id.EndButton);        EndButton.setOnClickListener(new  EndButtonListener());    }        class StartButotnListener implements OnClickListener{        @Override        public void onClick(View v) {            // TODO Auto-generated method stub            handler.post(updateThread);        }    }        class EndButtonListener implements OnClickListener{        @Override        public void onClick(View v) {            // TODO Auto-generated method stub            handler.removeCallbacks(updateThread);        }    }    //创建一个Handler对象    Handler handler = new Handler();    //将要执行的操作下载线程对象的run方法当中    Runnable updateThread = new Runnable(){                public void run(){            System.out.println("UpdateThread");            //在run方法内部,执行postDelayed或者是post方法            handler.postDelayed(updateThread,3000);        }    };}

 

以下代码是activity_main.xml中的代码

 

转载地址:http://jxzjo.baihongyu.com/

你可能感兴趣的文章
激活modelsim se 10.4 时运行patch_dll.bat不能生成TXT
查看>>
17秋 软件工程 Alpha 事后诸葛亮会议
查看>>
线性空间
查看>>
疑似checkpoint堵塞数据库连接
查看>>
Node.js中针对中文的查找和替换无效的解决方法
查看>>
理解指针的关键
查看>>
如何查看Ubuntu下已安装包版本号
查看>>
我的那些年(2)~我毕业了
查看>>
VS2017 配置ImageMagick
查看>>
Hive任务优化--控制hive任务中的map数和reduce数
查看>>
[摄影]上海往事
查看>>
『原创』c#实现文件加密、解密及文件拖拽至程序图标直接打开
查看>>
【Leetcode】Search in Rotated Sorted Array
查看>>
redis3.0.0 集群安装详细步骤
查看>>
如何在Linux命令行中创建以及展示演示稿
查看>>
FutureTask——另一种闭锁的实现
查看>>
Android和MVC
查看>>
Linux 用户和用户组管理
查看>>
tomcat架构分析(valve源码导读)
查看>>
spring中InitializingBean接口使用理解(转)
查看>>