如果我使用 MediaPlayer 的 setWakeMode 方法,它会自动释放吗?如果是,什么时候?

If I use MediaPlayer's setWakeMode method, is it released automatically and if so, when?

Android 的 MediaPlayer class 有一个漂亮的方法可以让你设置唤醒锁:

mPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);

我的问题是:这个唤醒锁什么时候释放?当我调用

时它会自动发生吗
mPlayer.release();

还是我遗漏了什么?

这里是该方法的官方文档:MediaPlayer.setWakeMode

My question is: when is this wakelock released? Does it happen automatically when I call

mPlayer.release();

是的。检查他们的来源,MediaPlayer.javarelease() 调用 stayAwake() 告诉是否 hold/release 唤醒锁。

private void stayAwake(boolean awake) {
    if (mWakeLock != null) {
        if (awake && !mWakeLock.isHeld()) {
            mWakeLock.acquire();
        } else if (!awake && mWakeLock.isHeld()) {
            mWakeLock.release();
        }
    }
    mStayAwake = awake;
    updateSurfaceScreenOn();
}

public void release() {
    stayAwake(false);
    updateSurfaceScreenOn();
    mOnPreparedListener = null;
    mOnBufferingUpdateListener = null;
    mOnCompletionListener = null;
    mOnSeekCompleteListener = null;
    mOnErrorListener = null;
    mOnInfoListener = null;
    mOnVideoSizeChangedListener = null;
    mOnTimedTextListener = null;
    if (mTimeProvider != null) {
        mTimeProvider.close();
        mTimeProvider = null;
    }
    mOnSubtitleDataListener = null;
    _release();
}

private native void _release();