2016-01-07 43 views
2

我做了Service,它启动时使用Thread。我想在应用程序关闭时继续运行服务(START_STICKY)。返回START_STICKY从线程服务

为了使服务保持运行,我必须回到START_STICKY

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      while(true) { 
       try { 
        Thread.sleep(2000); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    }).start(); 
    return START_STICKY; 
} 

我如何用我的线程返回呢?

+2

http://stackoverflow.com/questions/9434179/how-to-keep-a-service-running-in-background-even-after-user-quits-the-app – koutuk

+2

我知道我必须使用START_STICKY但是如果我有一个onStartCommand线程,我该如何返回它? – tomss

+0

我不明白你的问题。 – njzk2

回答

0

这似乎是Thread概念的误解。您在onStartCommand()中开始的线程不会“阻止”该方法返回。这里发生的情况如下:

  1. onStartCommand()叫上一些线程(可能是主要原因之一)立即
  2. Thread.start()回报接着返回从onStartCommand()START_STICKY标志。

其结果有运行的至少两个线程中,一个在其上onStartCommand()已被调用,另一种执行该方法run()