Android定时器和Handler用法实例分析

时间:2021-05-02

本文实例讲述了Android定时器和Handler用法。分享给大家供大家参考。具体分析如下:

一、环境:

主机:WIN8
开发环境:Android Studio

二、定时器使用示例:

初始化:

? 1 2 3 4 //定时器 private Timer Timer_Work = new Timer(); //工作间隔,单位:ms private final int INTERVAL_WORK = 5000;

创建定时器线程:

? 1 2 3 4 5 6 7 8 9 10 /** * 构造函数 */ public Config() { //生成配置信息 generate_config_info(); //创建定时线程 Timer_Work.schedule(new Task(), INTERVAL_WORK, INTERVAL_WORK); // 定时任务 }

新建任务:

? 1 2 3 4 5 6 7 8 9 /** * 定时器线程定时工作 */ private class Task extends TimerTask { @Override public void run() { generate_config_info(); } }

三、定时器和Handler组合工作,更新UI示例(定时器线程不能直接更新UI):

定时器任务:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 /** * 定时器线程定时工作 */ 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处理信息:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 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

? 1 handler.postDelayed(runnable, 200);

产生线程:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 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程序设计有所帮助。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章