0

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

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

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

其他可能性只是将持有服务的先前变量清空(调用了 onDestroy)。之后,完全重新创建服务。

你怎么看?

4

1 回答 1

4

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

那么它就不需要存在了,所以请允许它在解绑后被销毁。

它只需要一点内存

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

这不是个好主意吗?

不,这不是一个好主意。

如果不是,为什么?

除了惹恼用户之外,它并没有解决任何问题。

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

其他可能性只是将持有服务的先前变量清空(调用了 onDestroy)。

不应该有“持有服务的先前变量”。没有必要Service在任何类型的“变量”中保存 a 。而且,由于我的猜测是您所说的是 Java 程序员所称的“静态数据成员”,因此您绝对不想Context在静态数据成员中保存像 `Service* 这样的瞬态,因为它代表了一个内存泄漏。

于 2013-07-05T14:21:47.550 回答