Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android定時器和Handler用法實例分析

Android定時器和Handler用法實例分析

編輯:關於Android編程

本文實例講述了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程序設計有所幫助。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved