我的应用程序中有一个服务会自动终止。我在Android 4.0(Ice Cream Sandwich)中测试了我的应用程序,它运行良好,但当我在Android 4.4.2中运行相同的应用程序时,服务会自动终止。有人能告诉我服务自动终止的场景吗?
Android系统在RAM有压力(内存不足)时会杀死进程,它需要通过杀死当前在后台运行的应用程序的最低优先级来回收RAM资源。因此,您可以将Service
的优先级设置为前台,尽管该线程在后台运行。
来自文档:
启动的服务可以使用startForeground(int,Notification)API将服务置于前台状态,系统认为它是用户主动意识到的,因此在内存不足时不会被杀死。(理论上,在当前前台应用程序的极端内存压力下,服务仍然有可能被终止,但在实践中,这不应该是一个问题。)
为了防止服务被android的内存管理杀死,你应该从特定的服务启动一个On Going通知,并在你的服务结束时将其关闭