重新启动服务vs stopForeground(true)

时间:2013-07-05 13:29:43

标签: android android-service

当用户关闭MainActivity时,我取消绑定我的服务。在那种情况下,服务'onDestroy被调用。所以我不会继续使用它。

在这种情况下,您如何看待以下想法?

我不能只在服务上调用stopForeground(true)吗?因为它没有做任何重要的事情,它只需要一点RAM。之后,当用户重新打开MainActivity(制作需要服务的东西)时,我可以重新调用startForeground()。这不是个好主意吗?如果没有,为什么?

其他可能性只是将前一个保存服务的变量(调用了onDestroy)归零。然后,完全重新创建服务。

您怎么看?

1 个答案:

答案 0 :(得分:4)

  

因为它没有做任何重要的事情

然后它不需要存在,所以请在解除绑定后允许它被销毁。

  

它只需要一点RAM

认为“有点”用户认为“有点”的内容可能不一样。此外,它会在状态栏中放置一个图标。此外,它将导致您的进程以前台优先级运行,可能会影响用户使用“真正的”前台应用程序。

  

这不是一个好主意吗?

不,这不是一个好主意。

  

如果没有,为什么?

除了烦扰用户之外,它没有解决任何问题。

如果服务持有某种数据,则需要将该数据保存在持久性存储中,例如文件或数据库。无论您是否正在运行服务,您的进程都可以由用户或操作系统随时终止。

  

其他可能性只是将前一个保存服务的变量(调用了onDestroy)归零。

不应该有“以前的变量持有服务”。任何类型的“变量”都不需要Service。而且,因为我的猜测是你所谈论的是Java程序员所称的“静态数据成员”,你肯定不希望保持一个瞬态Context就像一个`静态数据成员中的Service *,表示内存泄漏。