没有主线程可以存在后台线程吗?

Posted

技术标签:

【中文标题】没有主线程可以存在后台线程吗?【英文标题】:Can a background thread exist without the main thread? 【发布时间】:2021-05-18 09:24:34 【问题描述】:

如果我从后台/最近应用程序列表中删除应用程序,UI 线程也会停止,以便系统可以回收与 UI 关联的内存。现在考虑一个触发 PeriodicWorkRequest 的情况,它反过来启动一个工作程序(在应用程序从后台/最近的应用程序列表中删除之后)。 worker 隐式运行在一个单独的后台线程上,并正在执行分配的任务。但是 UI/Main 线程是否也与工作线程一起创建?

应用可以在没有活动的情况下存在。它可以有其他组件,如服务等,没有 UI。这种情况下,UI/Main线程还存在吗?

或者在任何其他情况下,一个进程是否可以存在没有 UI/主线程,只有一个工作线程?

【问题讨论】:

主线程和 looper 将始终与应用程序一起初始化,无论它是如何启动的。 【参考方案1】:

android 中,事情变得非常复杂。 Android 是一个支离破碎的生态系统,一些 OEM 会执行一些设备更改,从而导致跨设备的不同行为,例如,当您关闭应用程序而不是执行宽限关闭时,它会立即杀死以提供即时效果。即使是后台工作人员也不是很有保障,请阅读更多here

后台工作人员是你最好的选择。

【讨论】:

以上是关于没有主线程可以存在后台线程吗?的主要内容,如果未能解决你的问题,请参考以下文章

浏览器页面关闭后台线程会中断吗

我可以在没有后台进程的情况下避免“不响应”消息吗

如何防止主线程ios杀死后台线程

我可以在后台线程中处理对 Flask 服务器的 POST 请求吗?

无法从 iOS6 中的后台线程调用主线程上的代码

Python 3 - 主线程未检测到后台线程中的KeyboardInterrupt,直到用户将鼠标悬停在GUI窗口上