Android编程:定时器和Handler的使用

环境:

主机:WIN8

开发环境:Android Studio


定时器使用示例:

初始化:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. //定时器  
  2.     private Timer Timer_Work = new Timer();  
  3.     //工作间隔,单位:ms  
  4.     private final int INTERVAL_WORK = 5000;  

创建定时器线程:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.      * 构造函数 
  3.      */  
  4.     public Config() {  
  5.         //生成配置信息  
  6.         generate_config_info();  
  7.           
  8.         //创建定时线程  
  9.         Timer_Work.schedule(new Task(), INTERVAL_WORK, INTERVAL_WORK);// 定时任务    
  10.     }  

新建任务:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.      * 定时器线程定时工作 
  3.      */  
  4.     private class Task extends TimerTask {  
  5.         @Override    
  6.         public void run() {    
  7.             generate_config_info();  
  8.         }  
  9.     }  


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

定时器任务:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.      * 定时器线程定时工作 
  3.      */  
  4.     private class Task extends TimerTask {  
  5.         @Override  
  6.         public void run() {  
  7.             if (get_state() == ENUM_State.FREE)  
  8.             {  
  9.                 connect("10.58.1.59",8906);  
  10.             }  
  11.             if (get_state() == ENUM_State.CONNECT_SUCCESS)  
  12.             {  
  13.                 login("TianTian","");  
  14.             }  
  15.             if (get_state() == ENUM_State.LOGIN_SUCCESS)  
  16.             {  
  17.                 enter_room(1,"");  
  18.             }  
  19.             if (get_state() == ENUM_State.ENTER_ROOM_SUCCESS)  
  20.             {  
  21.                 Message message = new Message();  
  22.                 message.what = 1;  
  23.                 handler.sendMessage(message);  
  24.             }  
  25.         }  
  26.     }  

Handler处理信息:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. private Handler handler = new Handler() {  
  2.         public void handleMessage(Message msg) {  
  3.             switch (msg.what)  
  4.             {  
  5.                 case 1:  
  6.                 {  
  7.                     System.out.println("sdk打开视频准备");  
  8.                     video(-224);  
  9.                     break;  
  10.                 }  
  11.             }  
  12.             super.handleMessage(msg);  
  13.         }  
  14.     };  


Handler和Runnable组合产生线程示例:

延时200ms调用runnable

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. handler.postDelayed(runnable, 200);  

产生线程:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. Handler handler = new Handler();  
  2.     Runnable runnable = new Runnable() {  
  3.           
  4.         @Override  
  5.         public void run() {  
  6.             try {  
  7.                 int videoBitrate = anychatSDK.QueryUserStateInt(userID, AnyChatDefine.BRAC_USERSTATE_VIDEOBITRATE);  
  8.                 if (videoBitrate > 0)  
  9.                 {  
  10.                     handler.removeCallbacks(runnable);  
  11.                     mOtherView.setBackgroundColor(Color.TRANSPARENT);  
  12.                 }  
  13.                   
  14.                 handler.postDelayed(runnable, 200);  
  15.             } catch (Exception e) {  
  16.                 e.printStackTrace();  
  17.             }  
  18.         }  
  19.     };  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值