Android中的服务开销(我应该创建多少)

时间:2011-11-10 16:34:30

标签: android performance service overhead

有人知道Android中服务的开销有多大。
如果有任何其他论据帮助我做出以下设计决定。

我有两个SQLite Dbs,一个存储实际数据(基本上只读产品库存),另一个存储设置,所选项目列表等。

现在我创建了一个服务来管理这些数据库,主要有两个原因:

  • 我希望能够“保存在关闭状态”(设置),这可以使用onDestroy
  • 加载数据需要一些时间,因此快速关闭应用会将数据保存在内存中

从设计角度来看,我可以:

  • 创建一个处理两个数据库的服务
  • 创建两个服务,每个服务处理一个数据库

为每个数据库创建单独的服务感觉更干净,例如扩展通用基类来处理关机,定时器等。它还允许我独立配置它们(现在不需要)。

另一方面,我不想开始走这条路,然后,当我习惯在“服务”中做这样的事情时发现有3或5个服务的限制。

那么如何开销? 5个运行服务,而不是一个托管5个不同功能的服务?有什么想法吗?

3 个答案:

答案 0 :(得分:1)

在您的情况下,Android有效支持的服务数量无需担心。看过一些任务管理器中运行服务的列表后,我倾向于说大多数设备上最多可以运行~100个“运行”服务。

但是,我不确定你实际上要做什么应该在服务中实现。你能详细说明你认为自己需要服务的原因吗?

  

我希望能够“保存在关闭”(设置),这可以使用onDestroy

您不能在正常的Activity生命周期回调中执行此操作吗?

  

加载数据需要一些时间,因此快速关闭应用会将数据保存在内存中

“快速关闭”是什么意思?您是否尝试为DB数据构建某种缓存

答案 1 :(得分:1)

来自Android开发者文档...

  

谨慎使用服务

http://developer.android.com/training/articles/memory.html#Services

答案 2 :(得分:0)

如果服务是RemoteServices,那么它们将在一个单独的进程中启动,这会增加开销并且占用大量内存。

尝试为这两种方案使用单一服务。