gpt4 book ai didi

java - 安卓线程 : stopping a thread with heavy computation

转载 作者:行者123 更新时间:2023-11-29 09:20:51 26 4
gpt4 key购买 nike

我正在我的 android 应用程序中进行一些繁重的计算。因为我不想阻塞 UI 线程,所以我在一个单独的 WorkerThread 中进行计算,它扩展了 Thread。这很好用。但我无法停止线程。停止线程的正常方法是使用 interrupt() 或 volatile 变量来告诉线程它应该结束。但这仅适用于具有某种循环的线程。我正在使用外部库在线程中进行计算,但我无法将 isInterrupted()-check 放入该库中。停止线程的错误方法是使用 stop() 方法,该方法已被弃用,但在我的例子中是正确的方法,因为线程仅操作内部值。不幸的是,Android 不支持 stop(),因为它不支持已弃用的线程方法。

10-18 10:26:39.382: ERROR/global(13919): Deprecated Thread methods are not supported.
10-18 10:26:39.382: ERROR/global(13919): java.lang.UnsupportedOperationException

您现在还有其他方法可以停止 android 中的线程吗?提前致谢!托拜厄斯

PS:一些显示问题的代码:

public void method()
{
WorkerThread t = new WorkerThread();
t.start();
synchronized (this)
{
try
{
wait(1000);
} catch (InterruptedException e)
{
Log.e("",e.toString(),e);
}
}

//t.stop(); //not supported in android
//t.interrupt(); //can not be checked by the thread
}

class WorkerThread extends Thread
{
public void run()
{
externalLibrary.heavyComputation();
}
}

最佳答案

通常,除非您的外部库提供某种协议(protocol)来停止计算,否则无法正常停止计算。许多写得很好的库都会提供这样的协议(protocol),所以看看它的api。它也可能尊重 interrupt() 调用。可能是您已经检查过它,但它可能还需要一些时间才能退出。

关于java - 安卓线程 : stopping a thread with heavy computation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6555668/

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