From a4961b5e993ec1522060cab7b905ffe0beabfcc8 Mon Sep 17 00:00:00 2001 From: Roman Tsisyk Date: Fri, 29 Sep 2023 09:00:34 +0300 Subject: [PATCH] [android] Remove dependency on SplashActivity from MwmApplication.init() Signed-off-by: Roman Tsisyk --- .../src/main/cpp/app/organicmaps/MwmApplication.cpp | 10 +++++----- .../src/main/java/app/organicmaps/MwmApplication.java | 10 +++++----- .../src/main/java/app/organicmaps/SplashActivity.java | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/android/app/src/main/cpp/app/organicmaps/MwmApplication.cpp b/android/app/src/main/cpp/app/organicmaps/MwmApplication.cpp index 3c1b501326..d7d24e921d 100644 --- a/android/app/src/main/cpp/app/organicmaps/MwmApplication.cpp +++ b/android/app/src/main/cpp/app/organicmaps/MwmApplication.cpp @@ -27,17 +27,17 @@ extern "C" flavorName, buildType, isTablet); } - // static void nativeInitFramework(); + // static void nativeInitFramework(@NonNull Runnable onComplete); JNIEXPORT void JNICALL - Java_app_organicmaps_MwmApplication_nativeInitFramework(JNIEnv * env, jclass clazz, jobject listener) + Java_app_organicmaps_MwmApplication_nativeInitFramework(JNIEnv * env, jclass clazz, jobject onComplete) { if (!g_framework) { - g_framework = std::make_unique([listener = jni::make_global_ref(listener)]() + g_framework = std::make_unique([onComplete = jni::make_global_ref(onComplete)]() { JNIEnv * env = jni::GetEnv(); - jmethodID const methodId = jni::GetMethodID(env, *listener, "processNavigation", "()V"); - env->CallVoidMethod(*listener, methodId); + jmethodID const methodId = jni::GetMethodID(env, *onComplete, "run", "()V"); + env->CallVoidMethod(*onComplete, methodId); }); } } diff --git a/android/app/src/main/java/app/organicmaps/MwmApplication.java b/android/app/src/main/java/app/organicmaps/MwmApplication.java index 4560006a21..4c995b9687 100644 --- a/android/app/src/main/java/app/organicmaps/MwmApplication.java +++ b/android/app/src/main/java/app/organicmaps/MwmApplication.java @@ -164,10 +164,10 @@ public class MwmApplication extends Application implements Application.ActivityL * @throws IOException - if failed to create directories. Caller must handle * the exception and do nothing with native code if initialization is failed. */ - public boolean init(SplashActivity listener) throws IOException + public boolean init(@NonNull Runnable onComplete) throws IOException { initNativePlatform(); - return initNativeFramework(listener); + return initNativeFramework(onComplete); } private void initNativePlatform() throws IOException @@ -214,12 +214,12 @@ public class MwmApplication extends Application implements Application.ActivityL StorageUtils.requireDirectory(tempPath); } - private boolean initNativeFramework(SplashActivity listener) + private boolean initNativeFramework(@NonNull Runnable onComplete) { if (mFrameworkInitialized) return false; - nativeInitFramework(listener); + nativeInitFramework(onComplete); MapManager.nativeSubscribe(mStorageCallbacks); @@ -285,7 +285,7 @@ public class MwmApplication extends Application implements Application.ActivityL private native void nativeInitPlatform(String apkPath, String writablePath, String privatePath, String tmpPath, String flavorName, String buildType, boolean isTablet); - private static native void nativeInitFramework(SplashActivity listener); + private static native void nativeInitFramework(@NonNull Runnable onComplete); private static native void nativeProcessTask(long taskPointer); private static native void nativeAddLocalization(String name, String value); private static native void nativeOnTransit(boolean foreground); diff --git a/android/app/src/main/java/app/organicmaps/SplashActivity.java b/android/app/src/main/java/app/organicmaps/SplashActivity.java index b089d5ad38..952b79c743 100644 --- a/android/app/src/main/java/app/organicmaps/SplashActivity.java +++ b/android/app/src/main/java/app/organicmaps/SplashActivity.java @@ -145,7 +145,7 @@ public class SplashActivity extends AppCompatActivity boolean asyncContinue = false; try { - asyncContinue = app.init(this); + asyncContinue = app.init(this::processNavigation); } catch (IOException e) { showFatalErrorDialog(R.string.dialog_error_storage_title, R.string.dialog_error_storage_message);