我理解为什么在Android中,始终在线服务通常是一种反模式,但我的应用程序似乎真的在乞求一个:
在第一次加载时,应用程序必须通过数据库中可能数以千计的小实体来构建初始状态。内存中的数据不是很多(大多数都是后来延迟加载的),但由于应用程序的性质,第一次扫描是不可避免的。在硬件较慢和数据集较大的情况下,这种扫描最多需要6-7秒,平均可能在3秒左右。这个应用程序是一种“短时间脉冲使用”类型的东西,所以这些重复加载真的不可取。
我认为这要求后台服务永远处于活动状态并保持该状态,从而避免加载时间。它总是准备好被杀死,而不是在前台,所以如果系统或用户决定他们有它的服务,没有造成任何损害。但如果该服务处于平静状态,应用程序将立即启动,在我的情况下,这对用户体验有很大帮助。
我还是错了吗?
发布于 2011-07-28 04:09:12
我认为这要求后台服务永远处于活动状态并保持该状态,从而避免加载时间。
正如英国人所说,胡说八道。
在第一次加载时,应用程序必须通过数据库中可能数以千计的小实体来构建初始状态。
那就修好它。要么简化这项工作,要么以更简单的形式保存初始状态以供以后重用(例如,JSON)。
如果您可以使用RAM中保存的这项工作的缓存结果,那么您也可以使用保存在更易于读取的持久性数据结构中的此工作的缓存结果。
发布于 2011-07-28 03:42:32
一个“永远在线”的服务本质上就像一个守护进程,Android手机上有很多永远不会关闭的服务。
不过,在这种情况下,似乎更好的解决方案是简单地设置一个闪屏和/或等待对话框,直到数据加载完毕。在我看来,在应用程序不运行的时候占用资源是一个糟糕的主意,这样当用户最终打开它时,应用程序的加载速度会更快。如果应用程序的平均使用时间比加载时间小得多,那么以某种方式加速扫描可能会更好。
发布于 2011-07-28 03:53:22
人们使用任务杀手来杀死这样的服务。我的观点是,当你让用户知道为什么你的服务在运行(比如说,这会更快地加载应用程序),他就会理解它,而不是杀死它。当然,您还可以添加一个选项来决定是否使用该服务。
https://stackoverflow.com/questions/6850008
复制相似问题