# RemoteModelManager

public class **RemoteModelManager** extends [Object](https://developer.android.com/reference/java/lang/Object.html)  
Manages remote models.

Before using a remote model, download it with `https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModelManager`.

This class is thread safe.

### Public Method Summary

|---|---|
| Task\<[Void](https://developer.android.com/reference/java/lang/Void.html)\> | [deleteDownloadedModel](https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModelManager#deleteDownloadedModel(com.google.mlkit.common.model.RemoteModel))([RemoteModel](https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModel) remoteModel) Deletes the given `remoteModel` from disk. |
| Task\<[Void](https://developer.android.com/reference/java/lang/Void.html)\> | [download](https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModelManager#download(com.google.mlkit.common.model.RemoteModel,%20com.google.mlkit.common.model.DownloadConditions))([RemoteModel](https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModel) remoteModel, [DownloadConditions](https://developers.google.com/android/reference/com/google/mlkit/common/model/DownloadConditions) downloadConditions) Initiates the download of `remoteModel` if the download hasn't begun. |
| \<T extends [RemoteModel](https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModel)\> Task\<[Set](https://developer.android.com/reference/java/util/Set.html)\<T\>\> | [getDownloadedModels](https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModelManager#getDownloadedModels(java.lang.Class<T>))([Class](https://developer.android.com/reference/java/lang/Class.html)\<T\> modelType) Returns the set of all currently downloaded models of the given `modelType`. |
| synchronized static [RemoteModelManager](https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModelManager) | [getInstance](https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModelManager#getInstance())() Gets the `https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModelManager` instance. |
| Task\<[Boolean](https://developer.android.com/reference/java/lang/Boolean.html)\> | [isModelDownloaded](https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModelManager#isModelDownloaded(com.google.mlkit.common.model.RemoteModel))([RemoteModel](https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModel) remoteModel) Returns whether the given `remoteModel` is currently downloaded. |

### Inherited Method Summary

From class java.lang.Object

|---|---|
| [Object](https://developer.android.com/reference/java/lang/Object.html) | clone() |
| boolean | equals([Object](https://developer.android.com/reference/java/lang/Object.html) arg0) |
| void | finalize() |
| final [Class](https://developer.android.com/reference/java/lang/Class.html)\<?\> | getClass() |
| int | hashCode() |
| final void | notify() |
| final void | notifyAll() |
| [String](https://developer.android.com/reference/java/lang/String.html) | toString() |
| final void | wait(long arg0, int arg1) |
| final void | wait(long arg0) |
| final void | wait() |

## Public Methods

#### public Task\<[Void](https://developer.android.com/reference/java/lang/Void.html)\> **deleteDownloadedModel** ([RemoteModel](https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModel) remoteModel)

Deletes the given `remoteModel` from disk. Does nothing if the model is
not downloaded.

#### public Task\<[Void](https://developer.android.com/reference/java/lang/Void.html)\> **download** ([RemoteModel](https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModel) remoteModel, [DownloadConditions](https://developers.google.com/android/reference/com/google/mlkit/common/model/DownloadConditions) downloadConditions)

Initiates the download of `remoteModel` if the download hasn't begun.

If the model's download is already in progress, the current download task will be
returned.

If the model is already downloaded to the device, and there is no update, the task
will immediately succeed.

If the model is already downloaded to the device, and there is update, a download
for the updated version will be attempted.

If the model downloaded failed, the returned `https://developers.google.com/android/reference/com/google/android/gms/tasks/Task` will
contain a `https://developers.google.com/android/reference/com/google/mlkit/common/MlKitException`.
Downloads for each type of model may encounter different `https://developers.google.com/android/reference/com/google/mlkit/common/MlKitException.ErrorCode`s.
Please check detailed documentation of each RemoteModel class for possible
`https://developers.google.com/android/reference/com/google/mlkit/common/MlKitException.ErrorCode`s.

##### Returns

- the task for the `remoteModel` download

#### public Task\<[Set](https://developer.android.com/reference/java/util/Set.html)\<T\>\>
**getDownloadedModels** ([Class](https://developer.android.com/reference/java/lang/Class.html)\<T\> modelType)

Returns the set of all currently downloaded models of the given
`modelType`.

#### public static synchronized [RemoteModelManager](https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModelManager)
**getInstance** ()

Gets the `https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModelManager`
instance.

#### public Task\<[Boolean](https://developer.android.com/reference/java/lang/Boolean.html)\>
**isModelDownloaded** ([RemoteModel](https://developers.google.com/android/reference/com/google/mlkit/common/model/RemoteModel) remoteModel)

Returns whether the given `remoteModel` is currently downloaded.