如果我使用MediaPlayer的setWakeMode方法,是否会自动释放,如果是,何时?

时间:2015-08-20 05:34:53

标签: android android-mediaplayer

Android的MediaPlayer类有一个很棒的方法可以让你设置一个唤醒锁:

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

我的问题是:这个唤醒锁何时发布?当我打电话时它会自动发生吗?

mPlayer.release();

或者我错过了什么?

以下是该方法的官方文档:MediaPlayer.setWakeMode

1 个答案:

答案 0 :(得分:2)

  

我的问题是:这个唤醒锁何时发布?它会发生吗?   我打电话时自动

     

mPlayer.release();

是的。检查他们的来源,MediaPlayer.javarelease()调用stayAwake()来表示是否持有/释放唤醒锁。

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();