我有一项服务,这是前景。它在本地绑定到一个(或多个)活动,因此活动和服务在同一个进程中运行。可能有一段时间没有显示活动(典型的音乐播放器用例)。
如果服务和活动处于相同的进程中,那么除非服务也被终止,否则操作系统无法收回该活动的内存?据这篇文章说,在我看来答案是肯定的。
如果最后一个是真的,我是否应该创建两个独立的过程:
或者,把活动和服务结合在一起并不是什么大不了的事?
发布于 2011-11-28 15:04:15
我有一项服务,这是前景。它在本地绑定到一个(或多个)活动,因此活动和服务在同一个进程中运行。可能有一段时间没有显示活动(典型的音乐播放器用例)。
“典型的音乐播放器用例”不会使用bindService() IMHO。前台服务不会使用bindService() IMHO。至少,除了用于活动->服务通信的bindService()之外,您还需要startService(),以便在unbindService() (例如,用户按回按)之后,服务可以保持运行。
如果服务和活动处于相同的进程中,那么除非服务也被终止,否则操作系统无法收回该活动的内存?
除非终止整个进程,否则活动的内存永远不会“被操作系统收回”。很不幸,这一点在文档中并不完全清楚。。
如果用户按回键退出该活动,或者您在活动上调用finish(),则应该垃圾收集该活动,假设没有任何东西导致它挂起(例如,由一个静态数据成员引用)。
我应该创建两个独立的过程吗?
绝对不是。
https://stackoverflow.com/questions/8297322
复制相似问题