zoukankan      html  css  js  c++  java
  • Android高手进阶教程(九)之Android Handler的使用!!!

    大家好我们这一节讲的是Android Handler的使用,在讲Handler之前,我们先提个小问题,就是如何让程序5秒钟更新一下Title.
    首先我们看一下习惯了Java编程的人,在不知道Handler的用法之前是怎么样写的程序,代码如下所示:
    1. package com.android.tutor;  
    2. import java.util.Timer;  
    3. import java.util.TimerTask;  
    4. import android.app.Activity;  
    5. import android.os.Bundle;  
    6. public class HandlerDemo extends Activity {  
    7.       
    8.     //title为setTitle方法提供变量,这里为了方便我设置成了int型  
    9.     private int title = 0;  
    10.       
    11.     public void onCreate(Bundle savedInstanceState) {  
    12.         super.onCreate(savedInstanceState);  
    13.         setContentView(R.layout.main);  
    14.           
    15.         Timer timer = new Timer();  
    16.         timer.scheduleAtFixedRate(new MyTask(), 15000);  
    17.     }  
    18.           
    19.     private class MyTask extends TimerTask{  
    20.         @Override  
    21.         public void run() {  
    22.               
    23.             setTitle("Welcome to Mr Wei's blog " + title);  
    24.             title ++;  
    25.         }     
    26.     }  
    27. }  
    然而当我们执行程序,并不能达到我们预期的效果,所以Android 引进了Handler 这个特殊的类,可以说它是Runnable和Activity交互的桥梁
    ,所以我们只要在run方法中发送Message,而在Handler里,通过不同的Message执行不同的任务。
    所以我们修改后的代码如下:
    1. package com.android.tutor;  
    2. import java.util.Timer;  
    3. import java.util.TimerTask;  
    4. import android.app.Activity;  
    5. import android.os.Bundle;  
    6. import android.os.Handler;  
    7. import android.os.Message;  
    8. public class HandlerDemo extends Activity {  
    9.       
    10.     //title为setTitle方法提供变量,这里为了方便我设置成了int型  
    11.     private int title = 0;  
    12.       
    13.     private Handler mHandler = new Handler(){  
    14.           
    15.         public void handleMessage(Message msg) {  
    16.             switch (msg.what) {  
    17.             case 1:  
    18.                 updateTitle();  
    19.                 break;  
    20.             }  
    21.         };  
    22.     };  
    23.     public void onCreate(Bundle savedInstanceState) {  
    24.         super.onCreate(savedInstanceState);  
    25.         setContentView(R.layout.main);  
    26.           
    27.         Timer timer = new Timer();  
    28.         timer.scheduleAtFixedRate(new MyTask(), 15000);  
    29.     }  
    30.           
    31.     private class MyTask extends TimerTask{  
    32.         @Override  
    33.         public void run() {  
    34.               
    35.             Message message = new Message();  
    36.             message.what = 1;  
    37.             mHandler.sendMessage(message);  
    38.               
    39.         }     
    40.     }  
    41.       
    42.       
    43.     public void updateTitle(){  
    44.           
    45.         setTitle("Welcome to Mr Wei's blog " + title);  
    46.         title ++;  
    47.     }  
    48. }  
    下面我们看一下效果图:
     

    本文出自 “Android_Tutor” 博客,请务必保留此出处http://weizhulin.blog.51cto.com/1556324/323922

  • 相关阅读:
    史记 · 码农列传
    死侍在新片中,扮演了一个 AI 驱动的 NPC
    什么是高中物理?一篇长长长长文告诉你!
    你管这玩意叫网络?
    你管这破玩意叫计算机?
    try-catch-finally中的4个巨坑,老程序员也搞不定!
    未来几年,软件测试九大新兴趋势
    代码中大量的if/else,你有什么优化方案?
    PHP部署服务端常见问题整理
    PHP服务端环境搭建
  • 原文地址:https://www.cnblogs.com/xiaoran1129/p/2814044.html
Copyright © 2011-2022 走看看