我将如何实现在整个应用程序中运行的线程。我看过服务,但我很确定这不是我想要的。即使应用程序关闭,我也不希望线程不断检查。我只想在应用程序的后台运行一个线程(即使我在活动之间切换),以便不断检查用户是否已将手机提升到他/她的耳朵。如果用户那么它将执行一个动作。有这样的例子吗?
答案 0 :(得分:5)
您不需要线程或服务。请参阅SensorManager的Android API文档中的示例。另外,请参阅下面的示例:
public class SensorActivity extends Activity, implements SensorEventListener {
private final SensorManager mSensorManager;
private final Sensor mSensor;
public SensorActivity() {
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
}
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
// TODO: implement your action here.
}
}
答案 1 :(得分:1)
这最好作为服务执行。在您的活动开始时绑定到该服务,并在您的活动完成后解除绑定。服务应该在绑定时开始侦听,并在未绑定时停止。