2012-03-12 71 views
1

我正在写作,并有一个运行计时器的应用程序(每十秒更新一次UI,就像手表一样),并且还通过GPS跟踪距离。预期的用例是让这个应用程序运行长达几个小时,所以它不应该被系统杀死。与您今天在市场上找到的很多正在运行的应用程序非常相似(尽管这不是我所做的)。Android - 定时器和GPS跟踪。我应该使用服务吗?

这个要求不应该被系统杀死,我指的是创建一个服务,但它似乎是将定时器和距离更新传递给用户界面,而这往往会导致效率低下。

使用服务是最好的方法吗?如果是这样,我如何有效地处理更新UI上的时间和距离?或者有另一种方法来防止系统杀死我的应用程序?

回答

1

我已经决定,我确实会使用一项服务,但只有在服务启动后才能使用它,并在活动暂停时使用它。活动将把当前状态传递给服务,在该服务中,它将处理所有需要完成的所有事情,并且当恢复时,活动将从服务中恢复状态并将其关闭。

0

除非您需要某些事情发生,即使您的应用程序的活动被推到另一个活动后面以及手机屏幕关闭时,您也不需要服务。所有的事情都是平等的,最好是让它的应用程序在恢复时巧妙地恢复。

例如,如果您有秒表,则会记录开始时间。当你的应用程序的活动暂停时,你会停止一切。你停止计数。但是当你恢复时,你就知道开始时间,这样你就可以用正确的时间进行选择并恢复更新UI。

只需创建一个计时器/线程来更新您的活动中的用户界面。在onResume()中启动并停在onPause()上。

+0

谢谢。这对定时器来说非常合理,但我认为它不适用于GPS部分。我可以存储最后一次知道的位置,但由于它们可能会轮流出现,因此回到活动时仅使用最后一个位置并不准确。 – Scott 2012-03-12 22:23:21

+0

您在活动中注册一个位置侦听器。你开始在onResume()中侦听并停在onPause()中。如果您的活动不在前台需要跟踪位置,则需要服务。 – 2012-03-14 02:48:10

相关问题