【发布时间】:2016-05-26 19:46:35
【问题描述】:
服务可以无限期地在后台运行,即使启动该服务的组件被破坏。
线程有这个优点吗?
如果我们有一个从互联网下载文件的线程,如果我们关闭应用程序,它会停止吗? 我知道使用服务更好,但是在应用程序作为服务关闭后线程会恢复工作吗?
【问题讨论】:
标签: android multithreading service
服务可以无限期地在后台运行,即使启动该服务的组件被破坏。
线程有这个优点吗?
如果我们有一个从互联网下载文件的线程,如果我们关闭应用程序,它会停止吗? 我知道使用服务更好,但是在应用程序作为服务关闭后线程会恢复工作吗?
【问题讨论】:
标签: android multithreading service
应用程序关闭后,线程会继续运行。但是,取决于线程消耗了多少资源,它可以随时被操作系统杀死。我不确定您的用例是什么,但由于线程很可能会被杀死,您几乎肯定应该使用服务来执行后台任务,例如下载文件。
如果您在不应中断的后台线程上工作(即使在启动线程的应用程序关闭之后),请使用服务并在前台启动服务。这会在通知栏中创建一个图标,通知用户某个后台进程正在运行。这样做可以大大降低您的服务被杀死的可能性。
来自android的文档:
前台服务是一种被认为是用户主动意识到的服务,因此不会在内存不足时被系统杀死。前台服务必须为状态栏提供通知,该通知位于“正在进行”标题下,这意味着除非服务停止或从前台删除,否则无法解除通知。
Android 的服务文档是阅读更多内容的好地方:
https://developer.android.com/guide/components/services.html#Foreground
但是在应用程序作为服务关闭后线程会恢复工作吗?
如果线程永远不会被杀死并且您重新打开应用程序,那么线程仍在运行。但同样,由于操作系统很可能会终止您的线程,因此应该将服务用于长时间运行的后台任务。
【讨论】: