// Signature format: 3.0
package androidx.loader.app {

  public abstract class LoaderManager {
    ctor public LoaderManager();
    method @MainThread public abstract void destroyLoader(int);
    method @Deprecated public abstract void dump(String!, java.io.FileDescriptor!, java.io.PrintWriter!, String![]!);
    method public static void enableDebugLogging(boolean);
    method public static <T extends androidx.lifecycle.LifecycleOwner & androidx.lifecycle.ViewModelStoreOwner> androidx.loader.app.LoaderManager getInstance(T);
    method public abstract <D> androidx.loader.content.Loader<D!>? getLoader(int);
    method public boolean hasRunningLoaders();
    method @MainThread public abstract <D> androidx.loader.content.Loader<D!> initLoader(int, android.os.Bundle?, androidx.loader.app.LoaderManager.LoaderCallbacks<D!>);
    method public abstract void markForRedelivery();
    method @MainThread public abstract <D> androidx.loader.content.Loader<D!> restartLoader(int, android.os.Bundle?, androidx.loader.app.LoaderManager.LoaderCallbacks<D!>);
  }

  public static interface LoaderManager.LoaderCallbacks<D> {
    method @MainThread public androidx.loader.content.Loader<D!> onCreateLoader(int, android.os.Bundle?);
    method @MainThread public void onLoadFinished(androidx.loader.content.Loader<D!>, D!);
    method @MainThread public void onLoaderReset(androidx.loader.content.Loader<D!>);
  }

}

package androidx.loader.content {

  public abstract class AsyncTaskLoader<D> extends androidx.loader.content.Loader<D> {
    ctor public AsyncTaskLoader(android.content.Context);
    method public void cancelLoadInBackground();
    method protected java.util.concurrent.Executor getExecutor();
    method public boolean isLoadInBackgroundCanceled();
    method public abstract D? loadInBackground();
    method public void onCanceled(D?);
    method protected D? onLoadInBackground();
    method public void setUpdateThrottle(long);
  }

  public class CursorLoader extends androidx.loader.content.AsyncTaskLoader<android.database.Cursor> {
    ctor public CursorLoader(android.content.Context);
    ctor public CursorLoader(android.content.Context, android.net.Uri, String![]?, String?, String![]?, String?);
    method public void deliverResult(android.database.Cursor!);
    method public String![]? getProjection();
    method public String? getSelection();
    method public String![]? getSelectionArgs();
    method public String? getSortOrder();
    method public android.net.Uri getUri();
    method public android.database.Cursor! loadInBackground();
    method public void onCanceled(android.database.Cursor!);
    method public void setProjection(String![]?);
    method public void setSelection(String?);
    method public void setSelectionArgs(String![]?);
    method public void setSortOrder(String?);
    method public void setUri(android.net.Uri);
  }

  public class Loader<D> {
    ctor public Loader(android.content.Context);
    method @MainThread public void abandon();
    method @MainThread public boolean cancelLoad();
    method public void commitContentChanged();
    method public String dataToString(D?);
    method @MainThread public void deliverCancellation();
    method @MainThread public void deliverResult(D?);
    method @Deprecated public void dump(String!, java.io.FileDescriptor!, java.io.PrintWriter!, String![]!);
    method @MainThread public void forceLoad();
    method public android.content.Context getContext();
    method public int getId();
    method public boolean isAbandoned();
    method public boolean isReset();
    method public boolean isStarted();
    method @MainThread protected void onAbandon();
    method @MainThread protected boolean onCancelLoad();
    method @MainThread public void onContentChanged();
    method @MainThread protected void onForceLoad();
    method @MainThread protected void onReset();
    method @MainThread protected void onStartLoading();
    method @MainThread protected void onStopLoading();
    method @MainThread public void registerListener(int, androidx.loader.content.Loader.OnLoadCompleteListener<D!>);
    method @MainThread public void registerOnLoadCanceledListener(androidx.loader.content.Loader.OnLoadCanceledListener<D!>);
    method @MainThread public void reset();
    method public void rollbackContentChanged();
    method @MainThread public final void startLoading();
    method @MainThread public void stopLoading();
    method public boolean takeContentChanged();
    method @MainThread public void unregisterListener(androidx.loader.content.Loader.OnLoadCompleteListener<D!>);
    method @MainThread public void unregisterOnLoadCanceledListener(androidx.loader.content.Loader.OnLoadCanceledListener<D!>);
  }

  public final class Loader.ForceLoadContentObserver extends android.database.ContentObserver {
    ctor public Loader.ForceLoadContentObserver();
  }

  public static interface Loader.OnLoadCanceledListener<D> {
    method public void onLoadCanceled(androidx.loader.content.Loader<D!>);
  }

  public static interface Loader.OnLoadCompleteListener<D> {
    method public void onLoadComplete(androidx.loader.content.Loader<D!>, D?);
  }

}

