android - 取消注册 SensorManager 不起作用

标签 android android-sensors sensormanager

在我的应用程序中,我使用光和接近传感器来检测手机的自掏腰包功能,然后在检测完成后取消注册 SensorManager。但即使应用程序的 CPU 使用情况仅显示 1-2 秒的使用情况,电池使用情况始终显示我的应用程序为“否”。列表中有 1 个应用程序令人担忧。

我已经使用了SensorManager.unRegisterListener,并且还设置了SensorManager = null,但情况仍然相同。

我读到,由于一些错误,传感器未正确取消注册。有什么好的方法可以正确配置传感器吗?

请指导。 奥姆卡尔·盖萨斯

使用应用程序中的代码示例进行了更新 -

@Override
protected void onPause()
{
    super.onPause();
    unHookReceiver();
}

private void unHookReceiver()
{
    if (r != null)
    {
        unregisterReceiver(r);
        if(GetProximityPreference("EnableReceiveByProximity"))
        {
            mySensorManager.unregisterListener(proximitySensorEventListener);
            mySensorManager.unregisterListener(lightSensorEventListener);
            mySensorManager = null;
            FileUtils.appendLog(FileUtils.GetCurrentDateTime() + " Power Consumption Log End");
            FileUtils.appendLog("------------------------------------------------");
        }
        r = null;
    }
}

我还按照 stackpverflow 上一篇文章的建议设置了sensorManager = null,但即使这样也没有帮助。尽管调用了清理代码,电池使用率仍然很高。该应用程序本身不应该使用太多电池,因为它是一个非常简单的应用程序,只有一个广播接收器和一个 Activity ,但在 Activity 中,我调用了光和接近传感器,我怀疑这些会导调用池使用量激增。但不知道为什么。

任何帮助都非常值得赞赏。

最佳答案

mSensorManager.registerListener(YourListener.this, mSensorManager
                    .getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION),
                    SensorManager.SENSOR_DELAY_NORMAL);

用它来注册您的监听器...然后使用您的unregisterListener

关于android - 取消注册 SensorManager 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11071035/

相关文章:

使用抽屉导航滚动Android工具栏

android - 从 fragment 对话框中显示 fragment

java - 当App后台震动方法不起作用时

android - Android 上的方位角/偏航和滚动方向传感器值不一致

android - 如何检查安卓设备中 TYPE_SIGNIFICANT_MOTION 传感器的可用性?

android - 适用于 Android 项目的类似 iOS 的 Storyboard工具?

java - 将(文本) View 拖放到 ListView 项目上

android - Android 上的冗余运动传感器?

java - Android getRotationMatrix 为所有值提供 0

android - SensorEvent onChanged 多线程?