Android 步进计数器是否默认在后台运行?

Android 步进计数器是否默认在后台运行?,android,android-sensors,Android,Android Sensors,我从Android创建了一个活动并实现了基本的步骤计数器 所有代码都在活动中,我没有创建任何服务或类似服务 所以问题是,即使我没有为它创建代码,应用程序是否在后台运行 我做了一些测试,看起来确实如此,但我不能100%确定情况是否如此 这是我的密码: private TextView count; // is inside my onCreate count = (TextView) findViewById(R.id.mTextField); sensorMan

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

所有代码都在活动中,我没有创建任何服务或类似服务

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

我做了一些测试,看起来确实如此,但我不能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
,但是我仍然可以关闭/锁定屏幕,四处走动并获取步骤


我觉得这有点混乱。

您需要在暂停期间
解除传感器的触发

   @Override
    protected void onPause() {
        super.onPause();
        sensorManager.unregisterListener(this);
    }

此外,如果您取消注册,您确实需要使用您的
布尔活动运行

确定,因此获取侦听器将删除在后台运行的传感器?是的,它将停止侦听。因此,正如我现在的代码一样,如果我按下手机上的大按钮,它将运行,这将最小化我的应用程序。如果我想创建一个计算我的步骤的应用程序,那么我不需要注销。。这是我的最后一个问题,我没有更多的:)只要用户看不到你的应用程序,就建议你取消它的权限;这是因为它将继续在后台执行,还可能导致“在主线程上运行的任务太多”错误。第二个问题:最糟糕的问题:它可能会导致内存泄漏,因为它将保留您的活动,并且收集的垃圾无法清理已销毁的活动。:)如果你的应用程序不需要用户界面,这意味着你需要使用像流行健身应用程序一样的服务。