我在Android服务中启动一个线程,当服务停止(运行onDestroy方法)时,线程仍在运行。我想知道服务是否停止或在退出时尝试停止其线程,如果不是,我怎么能阻止它。
答案 0 :(得分:1)
对于您的情况,没有。因为通常服务不一个进程。它与其他组件,活动等和您的线程在同一进程中运行。
要停止线程,您需要在onDestroy
中设置一个标志,指示线程应该自行终止。
在线程中,您应该检查是否定期设置标志。
答案 1 :(得分:0)
除非您自己或通过退出条件杀死线程,否则线程不会终止。
如果你杀死上面的线程,下面的线程将成为守护进程。
可以通过在构造函数中调用setDaemon(true);
来禁用此功能。
Service(){
setDaemon( true );
}
(更新)或@suitianshi所述:
boolean terminated = false;
@Override
public void run(){
while ( ! terminated ){
System.out.println( "Thread is running" );
}
}
public void terminate(){
terminated = true;
}
答案 2 :(得分:0)
看看这个,
https://developer.android.com/training/run-background-service/create-service.html
您也可以看到示例代码。意图服务是一种在后台运行并终止自身的服务。