线程在父进程停止时是否会停止

时间:2014-09-01 06:44:38

标签: android

我在Android服务中启动一个线程,当服务停止(运行onDestroy方法)时,线程仍在运行。我想知道服务是否停止或在退出时尝试停止其线程,如果不是,我怎么能阻止它。

3 个答案:

答案 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

您也可以看到示例代码。意图服务是一种在后台运行并终止自身的服务。