我對活動和服務之間的溝通有一些疑問。 我想寫一個速度計應用程序,用戶界面不斷更新從GPS傳感器派生的新數據。Android:溝通活動/服務
到目前爲止,我有一個在服務中運行的LocationListener。 Android中的最佳實踐是什麼:
1)從活動訪問服務,讓我們說每秒鐘和更新用戶界面。或者,
2)讓服務更新UI。
請問您能提供一些有用的鏈接案例2)嗎?
情況1)不應該是LocalService和IBinder接口的問題,對吧?
謝謝!
我對活動和服務之間的溝通有一些疑問。 我想寫一個速度計應用程序,用戶界面不斷更新從GPS傳感器派生的新數據。Android:溝通活動/服務
到目前爲止,我有一個在服務中運行的LocationListener。 Android中的最佳實踐是什麼:
1)從活動訪問服務,讓我們說每秒鐘和更新用戶界面。或者,
2)讓服務更新UI。
請問您能提供一些有用的鏈接案例2)嗎?
情況1)不應該是LocalService和IBinder接口的問題,對吧?
謝謝!
您有一項正在接收位置更新的服務,並且您想知道實時更新活動顯示的最佳方式。
其實服務不需要「在後臺錄製曲目」。而是使用BroadcastReceiver並使用帶有PendingIntent的requestLocationUpdates(..)
版本。您傳遞給requestLocationUpdates(..)
的PendingIntent應指向BroadcastReceiver,您可以在其中執行錄製最新曲目位置的業務。
requestLocationUpdates(String provider, long minTime, float minDistance, PendingIntent intent)
好的,所以現在你有一個BroadcastReceiver用跟蹤數據更新你的數據庫。如果你使用的是ContentProvider(而不是直接使用數據庫),那麼你可以讓你的Activity監視數據庫的變化。您可以通過調用onResume()
中的ContentResolver的registerContentObserver(..)
方法來完成此操作。
getContentResolver().registerContentObserver(uri, false, yourContentObserver);
只要確保你在你的onPause()
方法調用unregisterContentObserver(yourContentObserver)
。
非常感謝。我搞砸了靜態類和觀察者接口,但你的解決方案看起來不錯。 – 2010-01-28 10:22:56
你能解釋一下爲什麼你在這裏打擾一個服務嗎?你不需要僅僅使用'LocationListener'。 – CommonsWare 2010-01-25 14:28:21
我的應用程序將能夠在後臺錄製曲目,所以我需要一個服務。 – 2010-01-26 00:07:37