我对活动与服务之间的沟通有一些疑问。 我想写一个速度计应用程序,其中UI不断更新来自GPS传感器的新数据。
到目前为止,我在服务中运行了一个LocationListener。 Android中的最佳做法是什么:
1)从Activity访问服务,让我们说每一秒都更新UI。或者,
2)让服务更新UI。
你能为案例2)提供一些有用的链接吗?
案例1)不应该是LocalService和IBinder接口的问题,对吗?
谢谢!
答案 0 :(得分:2)
您有一项接收位置更新的服务,并且您想知道实时更新活动显示的最佳方法。
实际上,“在后台录制曲目”不需要服务。而是使用BroadcastReceiver并使用带有PendingIntent的requestLocationUpdates(..)
版本。您传入requestLocationUpdates(..)
的PendingIntent应指向BroadcastReceiver,您可以在此处记录最新的曲目位置。
requestLocationUpdates(String provider, long minTime, float minDistance, PendingIntent intent)
好的,现在你有一个BroadcastReceiver用跟踪数据更新你的数据库。如果您正在使用ContentProvider(而不是直接使用数据库),那么您可以让您的Activity监视数据库以进行更改。您可以通过在registerContentObserver(..)
中调用ContentResolver的onResume()
方法来执行此操作。
getContentResolver().registerContentObserver(uri, false, yourContentObserver);
请务必在unregisterContentObserver(yourContentObserver)
方法中致电onPause()
。