我正在编写和应用程序,它有一个运行计时器(像手表一样每隔10秒更新一次用户界面),并通过GPS跟踪距离。预期的用例是让这个应用程序运行长达几个小时,因此它不应该被系统杀死。与您今天在市场上发现的许多正在运行的应用程序非常相似(虽然这不是我正在制作的)。
它不应该被系统杀死的要求指向我创建服务,但似乎将定时器和距离更新传达给UI,这通常是非常低效的。
在这里使用服务是最好的方法吗?如果是这样,我如何有效地处理UI上的时间和距离更新?或者还有另一种方法可以阻止系统杀死我的应用程序吗?
答案 0 :(得分:1)
我已经确定我确实会使用某项服务,但只会启动它并在暂停活动时使用它。 Activity将当前状态传递给服务,它将处理所有需要完成的事情,并且当恢复时,活动将从服务返回状态并将其终止。
答案 1 :(得分:0)
您不需要服务,除非您要求发生某些事情,即使您的应用程序的活动被推到另一个活动后面,并且电话屏幕关闭时也是如此。在所有事情都相同的情况下,最好只让你的应用程序在恢复后巧妙地接收。
例如,如果你有一个秒表,你可以跟踪开始时间。当你的应用程序的活动暂停时,你就会停止一切。你不再计算了。但是当你恢复时,你知道开始时间,这样你就可以拿起正确的时间并继续更新用户界面。
只需创建一个计时器/线程来更新活动中的UI。在onResume()中启动它,然后在onPause()上停止。