Java Android意图服务实现SensorEventListener
我有一个关于Android中IntentService的问题。我将自己的服务定义如下: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) { } } 现
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()方法,它在主线程上被调用。怎么用?如果整个服务在完成第一个请求后停止,它为什么能够检测到传感器的变化???