gpt4 book ai didi

android - 启动/停止线程

转载 作者:太空狗 更新时间:2023-10-29 15:42:51 24 4
gpt4 key购买 nike

我找不到任何在锁定/解锁设备时停止/恢复线程的有效解决方案,任何人都可以提供帮助,或者告诉我在哪里可以找到如何做?我需要在手机锁定时停止线程,并在手机解锁时重新启动它。

最佳答案

Java 在用于停止线程的协作中断模型上运行。这意味着您不能在没有线程本身合作的情况下简单地停止线程执行中。如果你想停止一个线程,客户端可以调用 Thread.interrupt() 方法来请求线程停止:

public class SomeBackgroundProcess implements Runnable {

Thread backgroundThread;

public void start() {
if( backgroundThread == null ) {
backgroundThread = new Thread( this );
backgroundThread.start();
}
}

public void stop() {
if( backgroundThread != null ) {
backgroundThread.interrupt();
}
}

public void run() {
try {
Log.i("Thread starting.");
while( !backgroundThread.interrupted() ) {
doSomething();
}
Log.i("Thread stopping.");
} catch( InterruptedException ex ) {
// important you respond to the InterruptedException and stop processing
// when its thrown! Notice this is outside the while loop.
Log.i("Thread shutting down as it was requested to stop.");
} finally {
backgroundThread = null;
}
}

线程的重要部分是您不会吞下 InterruptedException,而是停止线程的循环和关闭,因为只有在客户端请求线程中断本身时,您才会得到此异常。

因此,您只需将 SomeBackgroundProcess.start() 连接到解锁事件,并将 SomeBackgroundProcess.stop() 连接到锁定事件即可。

关于android - 启动/停止线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11865418/

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