gpt4 book ai didi

java - 一个线程如何告诉另一个线程停止?

转载 作者:行者123 更新时间:2023-12-02 02:13:48 25 4
gpt4 key购买 nike

我正在创建一个在 Oncreate 方法中创建线程的服务。该线程是一个无限循环,播放 MP3 文件,然后 hibernate 30 秒。

我正在尝试找出如何在 onDestroy 方法中阻止此行为

代码

公共(public)无效onCreate(){ Toast.makeText(this, "服务已创建", Toast.LENGTH_LONG).show();

    mediaPlayer = MediaPlayer.create(this, R.raw.nysound);
mThread=new myThread();
mThread.start();
}

public class myThread extends Thread {

public void run() {
do{
mediaPlayer.start();
try
{
Thread.sleep(1000*20);
} catch(Exception e)
{
ted++;
}

} while(true);
} // end methed
} // end class

@Override
public void onDestroy() {
Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show();

}

最佳答案

您可以使用 boolean 标志来实现

public class myThread extends Thread {

private volatile boolean running = true;
public void run() {
do{
mediaPlayer.start();
try
{
Thread.sleep(1000*20);
} catch(Exception e)
{
ted++;
}

} while(running);
} // end methed

public void setRunning(boolean newValue) {
this.running = newValue;
}
} //

然后在主线程中执行以下操作

@Override
public void onDestroy() {
mThread.setRunning(false);
Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show();

}

关于java - 一个线程如何告诉另一个线程停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49579630/

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