我正在已启动的前台服务中使用线程池运行一些任务.而且,具体来说,在任务完成之前,该服务从不调用stopSelf().我想知道是否有必要在onDestroy()方法中中断/关闭线程池.操作系统会强行 destruct 服务并调用onDestroy()吗?我知道操作系统可以通过杀死进程来"杀死"服务,但它是否会通过简单地销毁服务来"杀死"服务.

额外详细信息:服务未导出,因此外部代码无法调用Context.stopService(),我自己的代码也没有调用Context.stopService(),只有Service.stopSelf().

推荐答案

原则上,在Android由于内存不足而终止进程之前,假设有足够的时间,它应该对所有正在运行的组件调用onDestroy().实际上,我已经很久没有测试过这个场景了.

此外,旧版本的Android过go 允许用户通过设置屏幕停止服务,现在没有什么可以阻止设备制造商提供类似的功能.

为了安全起见,我通常会在onDestroy()分钟内把东西清理干净.

Android相关问答推荐

Jetpack Compose make父级图像填充高度

显示本地房间数据库中未保存的项目的动态列表

如何在安卓系统上使用Float16霓虹灯?

原因平滑滚动的滞后懒惰列在android jetpack compose

在卡片上创建圆角底部边框

Jetpack Compose和Android Studio中的普通设计工具有什么不同?

保护所有程序包文件和类

如何将我的Android应用程序(Kotlin)中的图像分享给其他应用程序?

如何在Jetpack Compose中将对象的移动从一个路径平滑地切换到另一个路径?

找不到com.android.tools.build:gradle:8.0

如何在 kotlin 中接收带有和不带有可空对象的集合并保持引用相同

是什么导致调用 Firebase 服务器?

Android工作室未成立

如何解决 compose 中material 图标的由于接收器类型不匹配,以下候选者都不适用

如何在 Jetpack Compose 中添加多个标签

无法解析依赖项'com.github.smarteist:autoimageslider:1.4.0-appcompat'

在 Android Studio 中替换字符串中的 "

未使用的内容填充参数

当我点击这个按钮时,我想使布尔值(boolean)为真.并将其传递给函数,以便在屏幕上显示内容

如何在广播接收器(Broadcast Receiver)中获取我的单例处理程序的实例?