我有一个 Android 应用程序(活动),它也有相应的服务。该服务由活动启动,即使活动停止也应该持续运行。当活动再次启动时,它可以绑定到服务并查询它。
有时活动会被操作系统破坏和创建。这不应该影响事情,应该只是重新创建活动并能够再次绑定到服务。这基本上有效。
然而...
我发现 Dalvik VM 堆和本机堆都是非压缩的,因此大小会不断增加,直到活动用完内存并崩溃(即使总内存使用量实际上是恒定的并且没有泄漏)。由于在创建过程中完成了大量分配,因此销毁和重新创建活动会加剧这种情况。
这几乎保证了该活动将在多次重新启动后崩溃。这并没有让我很困扰,但是随后发生的事情是该服务也崩溃了,因为它是同一个应用程序的一部分。该服务包含一些重要数据,然后在崩溃期间丢失。
我对如何解决这个问题的任何建议感兴趣?
有没有办法将服务与活动分开(这样当活动崩溃时它也不会使服务崩溃),但仍然在同一个应用程序中拥有服务和活动?
我可以保留服务数据,但这需要对数据库进行多次访问,并且不利于节省电池。