gpt4 book ai didi

android - 服务和多线程调用

转载 作者:行者123 更新时间:2023-11-29 23:56:04 25 4
gpt4 key购买 nike

我创建了服务,这个服务有线程池,如果服务被销毁,是否意味着线程也被销毁,如果线程还在工作,如何停止运行?

最佳答案

if the service destroyed does that mean that the thread are destroyed too

没有。即使在 Service 被销毁后,Thread 仍将继续运行,直到操作系统在某个时间点终止您的应用程序进程,这可能会导致内存泄漏。

如果您创建线程,则必须清理它。

how to stop running threads if they are still working?

您不应使用 stop() 来终止线程,因为以这种方式停止线程是不安全的,并且会使您的应用程序和 VM 处于不可预测的状态。更干净的清理方法是中断线程。您需要维护对 Thread 的引用。然后清理线程执行以下操作:

@Override
public void onDestroy() {
super.onDestroy();
thread.interrupt();
}

在您的 Runnable in Thread 的 run() 中,执行以下操作

@Override
public void run() {
// stop your thread
if (interrupted()) {
return;
}
...
}

关于android - 服务和多线程调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50341469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com