欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-06-23 10:31:50
本文实例讲述了android定时器和handler用法。分享给大家供大家参考。具体分析如下: 一、环境: 主机:win8 开发环境:android studio 二...

本文实例讲述了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程序设计有所帮助。