Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Commit

Permalink
[android] Add OfflineManager.runPackDatabaseAutomatically(boolean) API
Browse files Browse the repository at this point in the history
  • Loading branch information
pozdnyakov committed Dec 2, 2019
1 parent 6d4e5f5 commit e373d8a
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,9 @@ public void run() {
/**
* Packs the existing database file into a minimal amount of disk space.
* <p>
* This operation has a performance impact as it will vacuum the database,
* forcing it to move pages on the filesystem.
* <p>
* When the operation is complete or encounters an error, the given callback will be
* executed on the database thread; it is the responsibility of the SDK bindings
* to re-execute a user-provided callback on the main thread.
Expand Down Expand Up @@ -396,9 +399,10 @@ public void run() {
/**
* Erase resources from the ambient cache, freeing storage space.
* <p>
* Erases the ambient cache, freeing resources. This operation can be
* potentially slow because it will trigger a VACUUM on SQLite,
* forcing the database to move pages on the filesystem.
* Erases the ambient cache, freeing resources.
* <p>
* Note that this operation can be potentially slow if packing the database
* occurs automatically ({@link OfflineManager#runPackDatabaseAutomatically(boolean)}).
* </p>
* <p>
* Resources overlapping with offline regions will not be affected
Expand Down Expand Up @@ -661,14 +665,32 @@ private boolean isValidOfflineRegionDefinition(OfflineRegionDefinition definitio
* <p>
* Once this limit is reached, {@link OfflineRegion.OfflineRegionObserver#mapboxTileCountLimitExceeded(long)}
* fires every additional attempt to download additional tiles until already downloaded tiles are removed
* by calling {@link OfflineRegion#deleteOfflineRegion(OfflineRegion.OfflineRegionDeleteCallback)}.
* by calling {@link OfflineRegion#delete(OfflineRegion.OfflineRegionDeleteCallback)}.
* </p>
*
* @param limit the maximum number of tiles allowed to be downloaded
*/
@Keep
public native void setOfflineMapboxTileCountLimit(long limit);

/**
* Sets whether database file packing occurs automatically.
* By default, the automatic database file packing is enabled.
* <p>
* If packing is enabled, database file packing occurs automatically
* after an offline region is deleted by calling
* {@link OfflineRegion#delete(OfflineRegion.OfflineRegionDeleteCallback)}
* or the ambient cache is cleared by calling {@link OfflineManager#clearAmbientCache()}.
*
* If packing is disabled, disk space will not be freed after
* resources are removed unless {@link OfflineManager#packDatabase()} is explicitly called.
* </p>
*
* @param autopack flag setting the automatic database file packing.
*/
@Keep
public native void runPackDatabaseAutomatically(boolean autopack);

@Keep
private native void initialize(FileSource fileSource);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -388,6 +388,10 @@ public void run() {
* by other regions, until the database shrinks below a certain size.
* </p>
* <p>
* Note that this operation can be potentially slow if packing the database
* occurs automatically ({@link OfflineManager#runPackDatabaseAutomatically(boolean)}).
* </p>
* <p>
* When the operation is complete or encounters an error, the given callback will be
* executed on the main thread.
* </p>
Expand Down
5 changes: 5 additions & 0 deletions platform/android/src/offline/offline_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,10 @@ void OfflineManager::setMaximumAmbientCacheSize(jni::JNIEnv& env_, const jni::jl
std::exception_ptr exception) mutable { handleException(exception, *callback); });
}

void OfflineManager::runPackDatabaseAutomatically(jni::JNIEnv&, jboolean autopack) {
fileSource->runPackDatabaseAutomatically(autopack);
}

// FileSource::FileSourceCallback //

void OfflineManager::FileSourceCallback::onSuccess(jni::JNIEnv& env,
Expand Down Expand Up @@ -211,6 +215,7 @@ void OfflineManager::registerNative(jni::JNIEnv& env) {
METHOD(&OfflineManager::invalidateAmbientCache, "nativeInvalidateAmbientCache"),
METHOD(&OfflineManager::clearAmbientCache, "nativeClearAmbientCache"),
METHOD(&OfflineManager::setMaximumAmbientCacheSize, "nativeSetMaximumAmbientCacheSize"),
METHOD(&OfflineManager::runPackDatabaseAutomatically, "runPackDatabaseAutomatically"),
METHOD(&OfflineManager::putResourceWithUrl, "putResourceWithUrl"));
}

Expand Down
2 changes: 2 additions & 0 deletions platform/android/src/offline/offline_manager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ class OfflineManager {

void setMaximumAmbientCacheSize(jni::JNIEnv&, const jni::jlong size, const jni::Object<FileSourceCallback>& callback_);

void runPackDatabaseAutomatically(jni::JNIEnv&, jboolean autopack);

private:
std::shared_ptr<mbgl::DefaultFileSource> fileSource;
};
Expand Down

0 comments on commit e373d8a

Please sign in to comment.