日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

利用Handler通信来实时显示系统时间

發布時間:2025/3/20 windows 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用Handler通信来实时显示系统时间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關鍵技術:

本程序實現了在屏幕中實時顯示系統的時間,其中用到了Handler、Timer、TimerTask、Message等關鍵技術。


思路分析:

我們都知道,在Android中程序不能在主線程中(UI線程)中調用或進行費時的操作。所以我們就應該去為主線程另起一條線程,用來進行費時的操作。就好像我們開了一間快餐店,在快餐店里可以把前臺看成是一個UI主線程,他負責與客戶進行交互。另外還有一些比如說是外送員,他是負責外送快餐的,也就是說他是負責一部分費時操作的。

這樣一來,當客戶對前臺說要一份外送的快餐時,前臺就可以把這項費時的操作交給外送員,此后前臺可以暫時不用去管外送是怎么去送這份快餐。這就好比是用戶與UI線程交互時,用戶執行了一項費時操作,此時,UI線程會把這項費時操作的任務交給另一個線程,此后,UI線程也就不用去管這個線程是怎么去執行任務的了。

那具體的實現步驟又如何呢?可以借助本程序了解一部分主線程和費時線程還有Handler傳遞消息的機制。

要實現用Handler來傳遞信息,那個我們就必須要有一個Message類的實例。該實例有3個實例變量:

what:用戶定義的int型消息代碼,用來描述消息(可以類比控件的id);

obj:隨消息發送的用戶指定對象(一看它的名字就可以知道它是一個Object的類型,也就是說你想要傳遞什么消息,就可以傳遞什么消息);

target:處理消息的Handler。


代碼展示:

另外,想要實時進行顯示時間,那就必須要有一個計時器Timer對象。

Timer timer = new Timer(); // 創建一個計時器,用來定時更新數據/*** ........*/timer.schedule(timerTask, 0, 1000); 這里我們是用1秒為計時周期。

在計時器對象中,它執行了一個任務TimerTask對象,此時我們得到一條線程,用于發送message的內容。

TimerTask timerTask = new TimerTask() {@Overridepublic void run() {Message message = new Message();message.what = MESSAGE_WHAT_UPDATE_VIEW;message.obj = view;handler.sendMessage(message);}};


以上是線程發送出一條信息,我們可以用Handler來接收信息,再根據接收到的消息內容來執行費時操作。如下:

Handler handler = new Handler() {public void handleMessage(android.os.Message message) {View view = (View) message.obj;updateView(view);}};


就像是快餐店里,前臺必須得到顧客想要吃什么才能告訴外送員,他需要去外送什么,是一個道理。這里的updateView(view)是用得到的view來重新生成Fragment或是Activity中的內容。


點擊右側獲得Demo源碼:利用Handler實時更新時間

總結

以上是生活随笔為你收集整理的利用Handler通信来实时显示系统时间的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。