Android:沟通活动/服务

时间:2010-01-25 13:24:20

标签: android

我对活动与服务之间的沟通有一些疑问。 我想写一个速度计应用程序,其中UI不断更新来自GPS传感器的新数据。

到目前为止,我在服务中运行了一个LocationListener。 Android中的最佳做法是什么:

1)从Activity访问服务,让我们说每一秒都更新UI。或者,
2)让服务更新UI。

你能为案例2)提供一些有用的链接吗?

案例1)不应该是LocalService和IBinder接口的问题,对吗?

谢谢!

1 个答案:

答案 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()