首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能正确释放PowerManager.WakeLock

不能正确释放PowerManager.WakeLock
EN

Stack Overflow用户
提问于 2015-08-04 11:23:30
回答 1查看 381关注 0票数 0

我用PowerManager.WakeLock表示Sensor.TYPE_LIGHT in Activity。它工作得很好,但是当我关闭/转到其他Activity SensorEventListener时,如果get传感器发生变化,请继续打开/关闭屏幕。

代码样本

代码语言:javascript
复制
    SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    Sensor mLightSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
    PowerManager mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock mWakeLock = mPowerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "tag");

SensorEventListener接口法

代码语言:javascript
复制
@Override
public void onSensorChanged(SensorEvent event) {
    float[] lux = event.values;

    if (lux[0] <= 200) {
        mWakeLock.acquire();
    } else {
        if (mWakeLock.isHeld()) {
            mWakeLock.release();
        }
    }
}

SensorManager侦听器

代码语言:javascript
复制
 @Override
protected void onResume() {
    super.onResume();
    mSensorManager.registerListener(this, mLightSensor, SensorManager.SENSOR_DELAY_FASTEST);

}

@Override
protected void onPause() {
    super.onPause();
    mSensorManager.unregisterListener(this, mLightSensor);

}

@Override
protected void onDestroy() {
    super.onDestroy();
    if (mWakeLock.isHeld()) {
        mWakeLock.release();
    }

}

那么如何正确地释放和禁用WakeLock。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-04 13:20:55

我的错是使用SensorEventListener。可能是双重的WakeLock.acquire(),每次都这么叫。关键是在onCreate()中获取,在onDestroy()中发布。

代码语言:javascript
复制
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
PowerManager mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock mWakeLock = mPowerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "tag");
mWakeLock.acquire();
}

@Override
protected void onDestroy() {
    if (mWakeLock.isHeld()) {
        mWakeLock.release();
    }
    super.onDestroy();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31807999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档