Android定时器和Handler用法实例分析
作者:jdh99 发布时间:2022-11-09 22:18:08
标签:Android,定时器,Handler
本文实例讲述了Android定时器和Handler用法。分享给大家供大家参考。具体分析如下:
一、环境:
主机:WIN8
开发环境:Android Studio
二、定时器使用示例:
初始化:
//定时器
private Timer Timer_Work = new Timer();
//工作间隔,单位:ms
private final int INTERVAL_WORK = 5000;
创建定时器线程:
/**
* 构造函数
*/
public Config() {
//生成配置信息
generate_config_info();
//创建定时线程
Timer_Work.schedule(new Task(), INTERVAL_WORK, INTERVAL_WORK);
// 定时任务
}
新建任务:
/**
* 定时器线程定时工作
*/
private class Task extends TimerTask {
@Override
public void run() {
generate_config_info();
}
}
三、定时器和Handler组合工作,更新UI示例(定时器线程不能直接更新UI):
定时器任务:
/**
* 定时器线程定时工作
*/
private class Task extends TimerTask {
@Override
public void run() {
if (get_state() == ENUM_State.FREE)
{
connect("10.58.1.59",8906);
}
if (get_state() == ENUM_State.CONNECT_SUCCESS)
{
login("TianTian","");
}
if (get_state() == ENUM_State.LOGIN_SUCCESS)
{
enter_room(1,"");
}
if (get_state() == ENUM_State.ENTER_ROOM_SUCCESS)
{
Message message = new Message();
message.what = 1;
handler.sendMessage(message);
}
}
}
Handler处理信息:
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what)
{
case 1:
{
System.out.println("sdk打开视频准备");
video(-224);
break;
}
}
super.handleMessage(msg);
}
};
四、Handler和Runnable组合产生线程示例:
延时200ms调用runnable
handler.postDelayed(runnable, 200);
产生线程:
Handler handler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
try {
int videoBitrate = anychatSDK.QueryUserStateInt(userID, AnyChatDefine.BRAC_USERSTATE_VIDEOBITRATE);
if (videoBitrate > 0)
{
handler.removeCallbacks(runnable);
mOtherView.setBackgroundColor(Color.TRANSPARENT);
}
handler.postDelayed(runnable, 200);
} catch (Exception e) {
e.printStackTrace();
}
}
};
希望本文所述对大家的Android程序设计有所帮助。


猜你喜欢
- 首先提出这样一个问题:如果两个对象不相同,他们的hashCode值一定不相等吗?我们都知道equals和hashCode是Object中的方
- Mybatis Log Plugin使用今天发现大部分猿友关于查看执行sql语句的方法,只知道将其输出到控制台。然而还有更简便的方法,就是使
- Java 8新增了LocalDate和LocalTime接口,为什么要搞一套全新的处理日期和时间的API?因为旧的java.util.Dat
- 本教程为大家分享了学籍管理系统的具体java代码,供大家参考,具体内容如下1.需求分析 1.1系统功能设计 (1)能够查询学生的基本信息,如
- 概述什么是动态编程?动态编程解决什么问题?Java中如何使用?什么原理?如何改进?(需要我们一起探索,由于自己也是比较菜,一般深入不到这个程
- 本文研究的主要是SpringMVC中使用Thymeleaf模板引擎的相关内容,具体介绍如下。Thymeleaf提供了一组Spring集成,允
- 关于“标签PDF文件(Tagged PDF)标签PDF文件包含描述文档结构和各种文档元素顺序的元数据,是一种包含后端提供
- 本文实例讲述了Android编程实现仿优酷旋转菜单效果。分享给大家供大家参考,具体如下:首先,看下效果:不好意思,不会制作动态图片,只好上传
- 方法一 滑动屏幕 可重新显示出来protected void hideBottomUIMenu() { //隐藏虚拟
- jdk中自带了很多工具可以用于性能分析,位于jdk的bin目录下,jvisualvm工具可以以图形化的方式更加直观的监控本地以及远程的jav
- Authentication使用SpringSecurity可以在任何地方注入Authentication进而获取到当前登录的用户信息,可谓
- 本文实例讲述了C++实现的O(n)复杂度内查找第K大数算法。分享给大家供大家参考,具体如下:题目:是在一组数组(数组元素为整数,可正可负可为
- 前言大家在学习Java的过程中,或者工作中,始终都绕不开集合。在单线程环境下,ArrayList就可以满足要求。多线程时,我们可以使用Cop
- 推荐idea2022最新激活教程:idea2021最新激活方法https://www.jb51.net/article/197138.htm
- 前言在创建表格时,如果表格内容出现跨页显示的时候,默认情况下该表格的表头不会在下一页显示,在阅读体验上不是很好。下面分享一个方法如何在表格跨
- 经过很多查看在巨人的肩膀上写完这篇博客,如有雷同纯属巧合,虽然自己也查了些文章才总结的,但是站在巨人肩膀上不敢搞原创!学习使用一些插件,可以
- 1、什么是Callback,什么时候需要使用Callbackcallback是回调的意思,一般我们需要2个类需要相互掉用,一个类把数据动态传
- 前言打包桌面应用程序实在是一个不常使用的东西,偶尔使用起来经常会忘东忘西的耽误时间,因此,这篇文章多以图片记录过程,也是用于备忘。下载打包工
- Spring Boot FeignClient 捕获业务异常信息因项目重构采用spring cloud,feign不可避免。目前spring
- 代码思路:想要循环遍历文件夹下所有子文件夹,就要用到递归。首先判断路径是否存在:是:获取文件判断是否文件夹:是:调用自身,继续获取子文件夹下