Android服务在同一进程和内存中发布

时间:2011-11-28 14:28:26

标签: android memory android-activity

我有一个服务,这是前台。它在本地绑定到一个(或多个)活动,因此活动和服务在同一个进程中运行。可能有一段时间没有显示活动(典型的音乐播放器用例)。

如果服务和活动在同一个进程中,操作系统无法重新获取活动的内存,除非服务也被终止?根据{{​​3}}

,答案对我来说似乎是对的

如果最后一个是真的,我应该创建两个单独的过程:

  • 对系统/其他应用程序好一点?
  • 更有信心我的服务不会被杀死?

或者,将活动与服务结合在一起并不是什么大不了的事?

1 个答案:

答案 0 :(得分:2)

  

我有一个服务,这是前台。它在本地绑定到一个(或多个)活动,因此活动和服务在同一个进程中运行。可能有一段时间没有显示活动(典型的音乐播放器用例)。

“典型的音乐播放器用例”不会使用bindService()恕我直言。前台服务不会使用bindService()恕我直言。至少,另外bindService()进行活动 - >服务通信,您需要startService(),以便在unbindService()之后(例如,用户按下BACK) ),服务可以继续运行。

  

如果服务和活动在同一个进程中,操作系统无法重新分配活动的内存,除非服务也被终止?

活动的内存永远不会“被操作系统”重新占用,除非终止整个过程。不幸的是,this is not entirely clear from the documentation

如果用户按下BACK以退出活动,或者您在活动上调用finish(),则应该对活动进行垃圾收集,假设没有任何因素导致其挂起(例如,静态引用)数据成员)。

  

我应该创建两个单独的流程

绝对不是。