由于内存不足,我们如何防止Android-Remote-Service被操作系统杀死?

时间:2017-08-22 18:52:02

标签: android android-service android-source android-service-binding

我有一个Android远程服务,可通过AIDL访问客户端应用程序并使用其功能。 关于内存不足的情况,我有一些疑问。虽然远程服务被多个客户端/应用程序使用,但可能有机会在低内存等情况下被操作系统杀死。我正在寻找解决方案。

1 个答案:

答案 0 :(得分:1)

  

虽然远程服务被多个客户端/应用程序使用,但在低内存等情况下可能会被操作系统杀死。

公开AIDL接口的流程的有效重要性是:

  • 该过程的内在重要性,
  • 该流程中任何客户的最高重要性

更高重要性的流程更有可能被“内存外杀手”所左右,这是操作系统的一部分,它终止了Android SDK应用程序的流程,以释放系统RAM供其他应用程序使用。

因此,只要您拥有活跃的客户,并且这些客户很重要,您的应用就很重要。相反,如果您没有活跃的客户,或者这些客户并不重要,那么您的流程就不重要了。

  

由于内存不足,我们如何防止Android-Remote-Service被操作系统杀死?

构建您自己的固件,您可以将此服务实现为本机Linux守护程序,而不是Android SDK应用程序。

否则,您的进程可以在任何时候终止,内存不足,用户操作(例如,“设置”中的“强制停止”),或者可能由于其他原因(例如,未处理的异常)。

您可以将服务作为前台服务,以确保它具有高重要性,并且不太可能终止其进程。这会产生费用,用户将会看到Notification

相反,理想情况下,您可以设计应用程序,以便终止进程不会成为问题。

相关问题