session-android/src/org/thoughtcrime/securesms/util/CloseableLiveData.java

36 lines
742 B
Java
Raw Normal View History

package org.thoughtcrime.securesms.util;
import android.arch.lifecycle.MutableLiveData;
import java.io.Closeable;
/**
* Implementation of {@link android.arch.lifecycle.LiveData} that will handle closing the contained
* {@link Closeable} when the value changes.
*/
public class CloseableLiveData<E extends Closeable> extends MutableLiveData<E> {
@Override
public void setValue(E value) {
setValue(value, true);
}
public void setValue(E value, boolean closePrevious) {
E previous = getValue();
if (previous != null && closePrevious) {
Util.close(previous);
}
super.setValue(value);
}
public void close() {
E value = getValue();
if (value != null) {
Util.close(value);
}
}
}