Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.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
Java Android意图服务实现SensorEventListener_Java_Android_Performance_Android Intent - Fatal编程技术网

Java Android意图服务实现SensorEventListener

Java Android意图服务实现SensorEventListener,java,android,performance,android-intent,Java,Android,Performance,Android Intent,我有一个关于Android中IntentService的问题。我将自己的服务定义如下: public class ABC extends IntentService implements SensorEventListener { @Override protected void onHandleIntent(Intent intent) { } @Override public void onSensorChanged(SensorEvent event) { } } 现

我有一个关于Android中IntentService的问题。我将自己的服务定义如下:

public class ABC extends IntentService implements SensorEventListener {

  @Override
  protected void onHandleIntent(Intent intent) { }

  @Override
  public void onSensorChanged(SensorEvent event) { }
}

现在,如果我从其他活动启动服务,将调用
onHandleIntent()
。文档说它启动了一个工作线程来处理请求。但是,当调用
onSensorChanged()
方法时,哪个线程将执行
onSensorChanged()
方法中定义的代码。它是工作线程还是主应用程序线程?

根据,当intentservice不再有任何消息时(调用
stopSelf
)。因此,如果您需要长期运行的
服务
(我认为这对您的
SensorEventListener
)是合适的,那么您应该使用常规的
服务

是的,我理解。我想了解的是IntentService在上述两种情况下是如何为请求提供服务的。onHandleIntent()和onSensorChanged()。onHandleIntent()启动工作线程,并在完成时自行停止。onSensorChanged()怎么样???实际调用哪个线程来处理此请求?@pree-工作线程完成处理所有消息后,它会停止整个IntentService,这意味着没有任何内容可以接收传感器更改事件。如果您使用的是常规的
服务
(不会停止),那么
onSensorChanged()
,就像
服务
中的每个方法一样,将在主线程上调用。是的,我得到了它。它将在主线程上被调用。另外,我做了一个小实验,并使用startService()调用了onHandleInvoked()方法。它在完成请求后停止。然后我触摸传感器调用onSensorChanged()方法,它在主线程上被调用。怎么用?如果整个服务在完成第一个请求后停止,它为什么能够检测到传感器的变化???