步骤计数器是否在后台运行为默认值?

时间:2016-09-27 09:22:57

标签: android android-sensors

我创建了一个活动并实现了Android的基本步骤计数器。

所有代码都在活动中,我没有创建任何服务等。

所以问题是,即使我没有为它创建代码,应用程序是否在后台运行?

我做了一些测试,似乎确实如此,但我不是百分百确定是否是这种情况。

这是我的代码:

    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,但我仍然可以关闭/锁定屏幕,然后四处走动并完成步骤。

我觉得这有点令人困惑。

1 个答案:

答案 0 :(得分:1)

unrigester

期间,您需要onPause传感器
   @Override
    protected void onPause() {
        super.onPause();
        sensorManager.unregisterListener(this);
    }

此外,如果您取消注册,则需要使用boolean activityRunning