Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用线程从服务返回START\u STICKY_Android_Multithreading_Android Service - Fatal编程技术网

Android 使用线程从服务返回START\u STICKY

Android 使用线程从服务返回START\u STICKY,android,multithreading,android-service,Android,Multithreading,Android Service,我做了一个服务,它在启动时使用线程。我希望在应用程序关闭时保持服务运行(START\u) 要使服务继续运行,我必须返回START\u STICKY: @Override public int onStartCommand(Intent intent, int flags, int startId) { new Thread( new Runnable() { @Override public void run() { while(

我做了一个
服务
,它在启动时使用
线程
。我希望在应用程序关闭时保持服务运行(
START\u

要使服务继续运行,我必须返回
START\u 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;
}

如何将其与线程一起返回?这似乎是对线程概念的误解。在
onStartCommand()
中启动的线程不会“阻止”该方法返回。这里发生的情况如下:

  • onStartCommand()
    在某些线程(可能是主线程)上调用
  • Thread.start()
    立即返回,然后使用
    start\u STICKY
    标志从
    onStartCommand()
    返回

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

    我知道我必须使用START\u STICKY,但是如果我有一个onStartCommand线程,我如何返回它?我不理解你的问题。