Skip to content
阅读进度

页面退出为什么后台任务仍然执行? ​

返回 Java 与并发 目录

标准回答 ​

Activity 生命周期与普通线程、线程池任务的生命周期是两套机制。页面销毁不会自动停止你创建的任务。任务如果没有取消条件,还可能继续持有旧页面并回调已经失效的 View。

机制解释 ​

为任务明确拥有者:页面级工作随页面或 View 生命周期结束,ViewModel 工作通常随对应 ViewModel 清理,设备会话工作随会话关闭。取消要传递到真正的底层请求或阻塞 I/O,并在结果回调前检查会话或请求是否仍有效。

延伸追问 ​

Future.cancel(true) 就一定停了吗?不一定,它通常发出中断请求,任务和底层操作需要响应中断。对 Socket 等资源,还应按其 API 设计关闭和退出路径。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。