Return START_STICKY 来自线程服务

Return START_STICKY from Service with Thread

我制作了一个 Service,它在启动时使用 Thread。我想在我的应用程序关闭时保留服务 运行 (START_STICKY)。

要使服务保持 运行,我必须 return 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;
}

我怎样才能 return 它与我的线程?

好像是对Thread这个概念的误解。您在 onStartCommand() 中启动的线程没有 "prevent" 返回的方法。这里发生的事情如下:

  1. onStartCommand() 在某个线程(可能是主线程)上被调用
  2. Thread.start() returns 紧接着从 onStartCommand() 返回并带有 START_STICKY 标志。

因此至少有两个线程运行,一个调用了onStartCommand(),另一个执行run()方法。