Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Android's MediaPlayer class has a nifty method that lets you set a wakelock:

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

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

mPlayer.release();

or am I missing something?

Here's the official docs for the method: MediaPlayer.setWakeMode

like image 513
REJH Avatar asked Oct 21 '25 21:10

REJH


1 Answers

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

mPlayer.release();

Yes it is. Checking their source, MediaPlayer.java. release() calls stayAwake() that tells whether to hold/release a wakelock.

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();
like image 180
Glenn Avatar answered Oct 23 '25 10:10

Glenn



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!