Limits and Application Control
This page is dedicated to listing the current SDK constraints and learning how to apply product-specific policies such as storage limits, plan tiers, expiration, cellular usage, and deletion rules in the application layer.
The following are the current Android SDK constraints:
| Item | Current implementation |
|---|---|
| Packs | Each region consists of one or more pre-generated region packages; there is no maximum package limit |
| Tiles | No SDK-side tile-count limit; tileCount is only a catalog estimate |
| Regions | No SDK-side limit on the number of installed regions; the practical limit depends on device storage and the file system |
| Area | Only pre-generated regions in the catalog can be selected; the public API does not support downloads for arbitrary bounds or polygons |
| Zoom | Determined by the region package's minZoom / maxZoom. The application cannot specify a separate range for a download task |
| Bytes | No SDK-wide storage cap; enqueue and resume require the remaining data size plus a “max(100 MiB, 20%)” safety margin |
| Time period / expiry | The SDK does not automatically expire or periodically delete regions |
| Device | Data resides in an app-specific resource path; uninstalling the application, clearing application data, or deleting the path from host code removes the data |
| Cache | The SDK manages the map cache and installed region data; the application must not directly read, write, or delete internal database files |
| Concurrent downloads | A maximum of three region tasks run concurrently; remaining tasks are queued |
| Tile server | Regional Offline supports only NGLTomTom. NGLMapTiler is supported only for online maps. |
Application control over product policy:
| Capability | Implementation |
|---|---|
| Download selection | Select a regionId from the catalog, then call download() |
| Size estimation | Use totalSize, tarSize, downloadedBytes, and totalBytes |
| Download warnings | Before enqueueing, the application displays data-usage, roaming, storage, and plan warnings |
| Deletion | controlDownload(regionId, DownloadAction.DELETE) |
| Updates | Compare versions and call download(clearBefore = true). The SDK does not update automatically |
| Expiration | Define the policy in the application or on the server, then call DELETE |
| Maximum storage by tier | The SDK does not recognize tiers; the application totals OfflineInstalledRegion.totalBytes and enforces the limit before enqueueing |
The SDK does not enforce product-level limits such as plan tiers, maximum storage by subscription, expiration policy, cellular-download restrictions, or roaming rules. The SDK also does not define any server-side entitlements, account plans, and CDN policies. Implement these policies in the application before enqueueing downloads, using catalog size estimates, installed-region byte counts, and account-level entitlements from your product layer.