EX04_14.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:3k
源码类别:

android开发

开发平台:

Java

  1. package irdc.EX04_14;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. /*这里我们需要使用Handler类与Message类来处理运行线程*/
  5. import android.os.Handler;
  6. import android.os.Message;
  7. import android.widget.AnalogClock;
  8. import android.widget.TextView;
  9. /*需要使用Java的Calendar与Thread类来取得系统时间*/
  10. import java.util.Calendar;
  11. import java.lang.Thread;
  12. public class EX04_14 extends Activity 
  13. {
  14.   /*声明一常数作为判别信息用*/
  15.   protected static final int GUINOTIFIER = 0x1234;
  16.   
  17.   /*声明两个widget对象变量*/
  18.   private TextView mTextView;
  19.   public AnalogClock mAnalogClock;
  20.   
  21.   /*声明与时间相关的变量*/
  22.   public Calendar mCalendar;
  23.   public int mMinutes;
  24.   public int mHour;
  25.   
  26.   /*声明关键Handler与Thread变量*/
  27.   public Handler mHandler;
  28.   private Thread mClockThread;
  29.   /** Called when the activity is first created. */
  30.   public void onCreate(Bundle savedInstanceState) 
  31.   {
  32.     super.onCreate(savedInstanceState);
  33.     setContentView(R.layout.main);
  34.     
  35.     /*通过findViewById取得两个widget对象*/
  36.     mTextView=(TextView)findViewById(R.id.myTextView);
  37.     mAnalogClock=(AnalogClock)findViewById(R.id.myAnalogClock);
  38.     
  39.     /*通过Handler来接收运行线程所传递的信息并更新TextView*/
  40.     mHandler = new Handler()
  41.     {
  42.       public void handleMessage(Message msg) 
  43.       {
  44.         /*这里是处理信息的方法*/
  45.         switch (msg.what)
  46.         { 
  47.           case EX04_14.GUINOTIFIER:
  48.           /* 在这处理要TextView对象Show时间的事件 */           
  49.             mTextView.setText(mHour+" : "+mMinutes);
  50.             break; 
  51.         } 
  52.         super.handleMessage(msg); 
  53.       }
  54.     };
  55.     
  56.     /*通过运行线程来持续取得系统时间*/
  57.      mClockThread=new LooperThread();
  58.      mClockThread.start();
  59.   }
  60.     
  61.   /*改写一个Thread Class用来持续取得系统时间*/     
  62.   class LooperThread extends Thread
  63.   {
  64.     public void run() 
  65.     {
  66.       super.run();
  67.       try
  68.       {
  69.         do
  70.         {
  71.           /*取得系统时间*/
  72.           long time = System.currentTimeMillis();
  73.           /*通过Calendar对象来取得小时与分钟*/ 
  74.           final Calendar mCalendar = Calendar.getInstance();
  75.           mCalendar.setTimeInMillis(time);
  76.           mHour = mCalendar.get(Calendar.HOUR);
  77.           mMinutes = mCalendar.get(Calendar.MINUTE);
  78.           
  79.           /*让运行线程休息一秒*/
  80.           Thread.sleep(1000); 
  81.            /*重要关键程序:取得时间后发出信息给Handler*/
  82.            Message m = new Message();
  83.            m.what = EX04_14.GUINOTIFIER;
  84.            EX04_14.this.mHandler.sendMessage(m);
  85.         }while(EX04_14.LooperThread.interrupted()==false);
  86.         /*当系统发出中断信息时停止本循环*/
  87.       }
  88.       catch(Exception e)
  89.       {
  90.         e.printStackTrace();
  91.       }
  92.     }
  93.   }
  94. }