当用户关闭MainActivity时,我取消绑定我的服务。在那种情况下,服务'onDestroy被调用。所以我不会继续使用它。
在这种情况下,您如何看待以下想法?
我不能只在服务上调用stopForeground(true)吗?因为它没有做任何重要的事情,它只需要一点RAM。之后,当用户重新打开MainActivity(制作需要服务的东西)时,我可以重新调用startForeground()。这不是个好主意吗?如果没有,为什么?
其他可能性只是将前一个保存服务的变量(调用了onDestroy)归零。然后,完全重新创建服务。
您怎么看?
答案 0 :(得分:4)
因为它没有做任何重要的事情
然后它不需要存在,所以请在解除绑定后允许它被销毁。
它只需要一点RAM
认为“有点”用户认为“有点”的内容可能不一样。此外,它会在状态栏中放置一个图标。此外,它将导致您的进程以前台优先级运行,可能会影响用户使用“真正的”前台应用程序。
这不是一个好主意吗?
不,这不是一个好主意。
如果没有,为什么?
除了烦扰用户之外,它没有解决任何问题。
如果服务持有某种数据,则需要将该数据保存在持久性存储中,例如文件或数据库。无论您是否正在运行服务,您的进程都可以由用户或操作系统随时终止。
其他可能性只是将前一个保存服务的变量(调用了onDestroy)归零。
不应该有“以前的变量持有服务”。任何类型的“变量”都不需要Service
。而且,因为我的猜测是你所谈论的是Java程序员所称的“静态数据成员”,你肯定不希望保持一个瞬态Context
就像一个`静态数据成员中的Service *,表示内存泄漏。