summaryrefslogtreecommitdiff
path: root/platform/android/src/http_file_source.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/src/http_file_source.cpp')
-rw-r--r--platform/android/src/http_file_source.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/platform/android/src/http_file_source.cpp b/platform/android/src/http_file_source.cpp
index fc7ffbec8c..6b359aab8c 100644
--- a/platform/android/src/http_file_source.cpp
+++ b/platform/android/src/http_file_source.cpp
@@ -32,8 +32,7 @@ public:
jni::String retryAfter, jni::String xRateLimitReset,
jni::Array<jni::jbyte> body);
- static jni::Class<HTTPRequest> javaClass;
- jni::UniqueObject<HTTPRequest> javaRequest;
+ jni::Global<jni::Object<HTTPRequest>> javaRequest;
private:
Resource resource;
@@ -52,16 +51,14 @@ private:
static const int permanentError = 2;
};
-jni::Class<HTTPRequest> HTTPRequest::javaClass;
-
namespace android {
void RegisterNativeHTTPRequest(jni::JNIEnv& env) {
- HTTPRequest::javaClass = *jni::Class<HTTPRequest>::Find(env).NewGlobalRef(env).release();
+ static auto javaClass = jni::Class<HTTPRequest>::Singleton(env);
#define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name)
- jni::RegisterNativePeer<HTTPRequest>(env, HTTPRequest::javaClass, "nativePtr",
+ jni::RegisterNativePeer<HTTPRequest>(env, javaClass, "nativePtr",
METHOD(&HTTPRequest::onFailure, "nativeOnFailure"),
METHOD(&HTTPRequest::onResponse, "nativeOnResponse"));
}
@@ -82,6 +79,7 @@ HTTPRequest::HTTPRequest(jni::JNIEnv& env, const Resource& resource_, FileSource
jni::UniqueLocalFrame frame = jni::PushLocalFrame(env, 10);
+ static auto javaClass = jni::Class<HTTPRequest>::Singleton(env);
static auto constructor =
javaClass.GetConstructor<jni::jlong, jni::String, jni::String, jni::String>(env);
@@ -95,6 +93,7 @@ HTTPRequest::HTTPRequest(jni::JNIEnv& env, const Resource& resource_, FileSource
HTTPRequest::~HTTPRequest() {
android::UniqueEnv env = android::AttachEnv();
+ static auto javaClass = jni::Class<HTTPRequest>::Singleton(*env);
static auto cancel = javaClass.GetMethod<void ()>(*env, "cancel");
javaRequest->Call(*env, cancel);