From 7004e0654c537c79788ed02f125b9350ceff7cfe Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Mon, 30 Apr 2018 12:29:40 -0700 Subject: [PATCH] Re-land "Hold a global reference to the AssetManager Java object backing the APKAssetProvider" (#5132) Fixes https://github.com/flutter/flutter/issues/16222 --- shell/platform/android/apk_asset_provider.cc | 3 ++- shell/platform/android/apk_asset_provider.h | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/shell/platform/android/apk_asset_provider.cc b/shell/platform/android/apk_asset_provider.cc index 4cf6da16dc6..268897ef5c5 100644 --- a/shell/platform/android/apk_asset_provider.cc +++ b/shell/platform/android/apk_asset_provider.cc @@ -10,7 +10,8 @@ namespace blink { APKAssetProvider::APKAssetProvider(JNIEnv* env, jobject jassetManager, std::string directory) - : directory_(std::move(directory)) { + : java_asset_manager_(env, jassetManager), + directory_(std::move(directory)) { assetManager_ = AAssetManager_fromJava(env, jassetManager); } diff --git a/shell/platform/android/apk_asset_provider.h b/shell/platform/android/apk_asset_provider.h index 70ddbe454bc..7c3f8e12a23 100644 --- a/shell/platform/android/apk_asset_provider.h +++ b/shell/platform/android/apk_asset_provider.h @@ -9,6 +9,7 @@ #include #include "flutter/assets/asset_resolver.h" +#include "flutter/fml/platform/android/scoped_java_ref.h" #include "lib/fxl/memory/ref_counted.h" namespace blink { @@ -21,6 +22,7 @@ class APKAssetProvider final : public AssetResolver { virtual ~APKAssetProvider(); private: + fml::jni::ScopedJavaGlobalRef java_asset_manager_; AAssetManager* assetManager_; const std::string directory_; @@ -36,4 +38,4 @@ class APKAssetProvider final : public AssetResolver { } // namespace blink -#endif // FLUTTER_ASSETS_APK_ASSET_PROVIDER_H \ No newline at end of file +#endif // FLUTTER_ASSETS_APK_ASSET_PROVIDER_H