2011年8月23日 星期二

Android handler

今天在做一個 有關於定時追蹤定位的功能 其中比較特別的是以下幾個Method


onLocationChanged(Location location)
requestLocationUpdates(String Provider,long minTime,float minDistance,PendingIntent intent)
removeUpdates(PendingIntent intent)

onLocationChanged ,顧名思義,當LocationChanged時便會執行,
但前題是必須先呼叫 requestLocationUpdates ,針對特定的locationListener
這樣才能使得上述說法成立。詳情請 參考

當上述做法完成時,問題出現了!!!

雖然可以透過requestLocationUpdates來設定更新的時間間隔和距離,但是實際上測試的結果並不是想像中那麼完美,也就是說無法只透過這個方法來達成我們期望的定時追蹤定位的功能

因此,我們可以透過Thread+Handler來完成。

一但程式執行onLocationChanged

先執行removeUpdates

此後,不會再有任何的onLocationChanged 被執行

這時開始在
onLocationChanged 中設定 Thread 

並在Thread 裡面做該做的事情(先sleep所需時間再執行該做的工作)

工作完後利用handler.sendMessage()  通知 工作做完囉!

此時,你自訂的handler,須先override handleMessage

在裡面接受到剛剛完成的工作完成訊息後~(switch case)

便可執行requestLocationUpdates,重新恢復追蹤定位的功能囉!

如此便可達到定時追蹤定位的功能。

上述是簡單的流程敘述,了解後應該便能撰寫出符合自己需求的東西囉!

以下兩個連結,是求解過程中有幫助的網站,希望大家也可以看看~

沒有留言:

張貼留言