package co.smartreceipts.android.sync.network; import android.support.annotation.NonNull; /** * This interface defines different network provider types (e.g. WiFi-Only vs Mobile) in order to allow us to track the * current state and changing states of each */ public interface NetworkProvider { void initialize(); void deinitialize(); /** * Checks if a network connection is currently available * * @return {@code true} if the network is currently available. {@code false} if it is not. */ boolean isNetworkAvailable(); /** * Registers a listener to be informed network is lost or gained * * @param listener the {@link NetworkStateChangeListener} to register */ void registerListener(@NonNull NetworkStateChangeListener listener); /** * Un-registers a listener to no longer be if informed network is lost or gained * * @param listener the {@link NetworkStateChangeListener} to un-register */ void unregisterListener(@NonNull NetworkStateChangeListener listener); }