我有一个服务,这是前台。它在本地绑定到一个(或多个)活动,因此活动和服务在同一个进程中运行。可能有一段时间没有显示活动(典型的音乐播放器用例)。
如果服务和活动在同一个进程中,操作系统无法重新获取活动的内存,除非服务也被终止?根据{{3}}
,答案对我来说似乎是对的如果最后一个是真的,我应该创建两个单独的过程:
或者,将活动与服务结合在一起并不是什么大不了的事?
答案 0 :(得分:2)
我有一个服务,这是前台。它在本地绑定到一个(或多个)活动,因此活动和服务在同一个进程中运行。可能有一段时间没有显示活动(典型的音乐播放器用例)。
“典型的音乐播放器用例”不会使用bindService()
恕我直言。前台服务不会使用bindService()
恕我直言。至少,另外到bindService()
进行活动 - >服务通信,您需要startService()
,以便在unbindService()
之后(例如,用户按下BACK) ),服务可以继续运行。
如果服务和活动在同一个进程中,操作系统无法重新分配活动的内存,除非服务也被终止?
活动的内存永远不会“被操作系统”重新占用,除非终止整个过程。不幸的是,this is not entirely clear from the documentation。
如果用户按下BACK以退出活动,或者您在活动上调用finish()
,则应该对活动进行垃圾收集,假设没有任何因素导致其挂起(例如,静态引用)数据成员)。
我应该创建两个单独的流程
绝对不是。