智能課程表Android版-日期和時間的動態顯示(二) – Android移動開發技術文章_手機開發 Android移動開發教學課程

 

上一篇文章我們實現瞭時間的顯示,但是是靜態的,不能動態改變,那麼怎麼才能讓靜態的時間能以秒的方式來動態改變呢?

    由於在上一篇文章中我們獲得時間的方法是Calendar()類獲得當前時間的方法getTime(),它隻是返回一個程序啟動的那個時間點的時間,那麼要想以秒動的方式動態顯示時間,我們可以考慮使用多線程來每秒刷新一次主界面,這樣就可以每秒獲得一次當前時間點的時間以秒動的方式來顯示時間瞭。

 

    在Android中我們可以使用Handler來實現多線程。

 

    Handler在Android裡負責發送和處理消息。它的主要用途有:

 

(1).按計劃發送消息或執行某個Runnable(使用post方法);

 

(2).從其他線程中發送來的消息放入消息隊列中,避免線程沖突(常用於更新UI)

 

我們主要使用Handler的兩個方法:post(Runnable)和postDelayed(Runnable,long)

 

代碼如下:

 

public class DateAndTime extends Activity {

 

    /** Called when the activity is first created. */

 

private String DEFAULT_TIME_FORMAT = "yyyy-MM-dd hh:mm:ss";

 

private TextView textview01;

 

private String time;

 

    @Override

 

    public void onCreate(Bundle savedInstanceState) {

 

        super.onCreate(savedInstanceState);

 

        setContentView(R.layout.main);

 

        handler.post(updateThread);

 

        //將將要執行的線程對象添加到線程隊列當中,此時將會把該線程對象添加到handler對象的線程隊列當中

 

        textview01=(TextView)findViewById(R.id.textview01);

 

    }

 

    //創建Handler對象  

 

    Handler handler = new Handler(); 

 

    //新建一個線程對象

 

    Runnable updateThread = new Runnable(){  

 

        //將要執行的操作寫在線程對象的run方法當中  

 

        public void run(){

 

         handler.postDelayed(updateThread, 1000);

 

             //調用Handler的postDelayed()方法  

 

            //這個方法的作用是:將要執行的線程對象放入到隊列當中,待時間結束後,運行制定的線程對象  

 

            //第一個參數是Runnable類型:將要執行的線程對象  

 

            //第二個參數是long類型:延遲的時間,以毫秒為單位 

 

         SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_TIME_FORMAT);

 

     time = dateFormatter.format(Calendar.getInstance().getTime());

 

     textview01.setText(time);

 

        }  

 

    };

 

}

 

模擬器中運行既得:

 

摘自 tianshuguang的專欄

發佈留言