Android内存不足时,前台服务(不同进程/同一进程)的行为如何?

5
如果Service在清单文件中通过“:name”运行在不同的进程中,并设置了前台标志。当系统需要释放一些内存时(比如用户在使用重型界面后按下Home键并导航到其他重型应用程序),
  1. 它会仅杀死该应用程序的主进程以释放资源吗?(显然保留服务进程)然后在用户返回应用程序时重新启动主进程。

  2. 如果服务在同一进程中运行,它是否会释放除前台服务之外的所有活动资源?或者在这种情况下,整个进程(包括重型界面)是否被视为前台,从而消耗大量内存且对用户手机不友好?

P.S

我理解前台服务没有任何保证。 http://developer.android.com/reference/android/app/Service.html 我理解Android会立即终止进程的设计(这部分回答了第二个问题,但希望确认一下)。

http://android-developers.blogspot.com/2010/04/multitasking-android-way.html


关于(2)的小提示:我从myActivity启动了一个前台服务。即使我在myActivity上调用了finish(),最终导致activity上的onDestroy()被调用,前台服务仍然在运行(除非我在onDestroy中显式停止它)。 - Kevin Lee
1个回答

1
  1. 如果主进程不在前台,它将被杀死并在需要时重新启动。前台服务也可能被杀死,但要在所有后台进程被杀死之前。一旦内存再次可用,前台服务将立即重新启动。

  2. 是的,它会释放所有资源并尝试让服务保持运行状态。如果整个进程需要终止,服务也可能被杀死。进程将只重新启动运行服务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接