后台的计步器运行是默认的吗?
Is the step counter running in the background as default?
我创建了一个 activity 并实现了 Android 的基本计步器。
所有代码都在activity里面,我没有创建任何服务之类的。
所以问题是,即使我没有为它创建任何代码,应用程序 运行 是否也在后台运行?
我做了一些测试,看起来确实如此,但我不是 100% 确定是否是这样。
这是我的代码:
private TextView count;
// is inside my onCreate
count = (TextView) findViewById(R.id.mTextField);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
@Override
protected void onResume() {
super.onResume();
activityRunning = true;
Sensor countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
if(countSensor != null) {
sensorManager.registerListener(this, countSensor, SensorManager.SENSOR_DELAY_UI);
} else {
Toast.makeText(this, "Count sensor not available!", Toast.LENGTH_LONG).show();
}
}
@Override
protected void onPause() {
super.onPause();
activityRunning = false;
}
@Override
public void onSensorChanged(SensorEvent event) {
if(activityRunning) {
count.setText(String.valueOf(event.values[0]));
}
}
我知道 onPause()
方法集 activityRunning = false
,但我仍然可以 turn-off/lock-the-screen,四处走动并了解步骤。
我觉得这有点令人困惑。
您需要 unrigester
在 onPause
期间使用您的传感器
@Override
protected void onPause() {
super.onPause();
sensorManager.unregisterListener(this);
}
此外,如果您取消注册,您确实需要使用您的 boolean activityRunning
我创建了一个 activity 并实现了 Android 的基本计步器。
所有代码都在activity里面,我没有创建任何服务之类的。
所以问题是,即使我没有为它创建任何代码,应用程序 运行 是否也在后台运行?
我做了一些测试,看起来确实如此,但我不是 100% 确定是否是这样。
这是我的代码:
private TextView count;
// is inside my onCreate
count = (TextView) findViewById(R.id.mTextField);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
@Override
protected void onResume() {
super.onResume();
activityRunning = true;
Sensor countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);
if(countSensor != null) {
sensorManager.registerListener(this, countSensor, SensorManager.SENSOR_DELAY_UI);
} else {
Toast.makeText(this, "Count sensor not available!", Toast.LENGTH_LONG).show();
}
}
@Override
protected void onPause() {
super.onPause();
activityRunning = false;
}
@Override
public void onSensorChanged(SensorEvent event) {
if(activityRunning) {
count.setText(String.valueOf(event.values[0]));
}
}
我知道 onPause()
方法集 activityRunning = false
,但我仍然可以 turn-off/lock-the-screen,四处走动并了解步骤。
我觉得这有点令人困惑。
您需要 unrigester
在 onPause
@Override
protected void onPause() {
super.onPause();
sensorManager.unregisterListener(this);
}
此外,如果您取消注册,您确实需要使用您的 boolean activityRunning