Я пытаюсь вызвать v8 из вызова JNI в приложении Android из фонового потока. Это вызывает сбой во время выполнения с жалобой на v8 :: ObjectTemplate :: Новая (v8 :: Handlev8 на фоновом потоке в Android JNI
воспроизвести вызвать следующую JNI
void JSfunc() {
v8::Isolate* currentIsolate = v8::Isolate::GetCurrent();
if(!currentIsolate) {
currentIsolate = v8::Isolate::New();
}
v8::HandleScope handle_scope(currentIsolate);
v8::Handle<v8::ObjectTemplate> global = v8::ObjectTemplate::New();
}
из следующего кода Java
{
final Thread loadJS = new Thread() {
@Override
public void run() {
JSfunc());
}
};
loadJS.start();
}
При вызове функции непосредственно из потока пользовательского интерфейса или исполняемого он работает.
идей?
Если вы врезаться там, я думаю, мы вправе предположить, что в фрагмент jni-кода, который вы оставили взамен длинной декларации заголовка JNI JSFunc для нашей выгоды? (Не обвиняйте вас ...) – Tom
Да, я пропустил extern «C» {JNIEXPORT void Java_com_example_app_class_JSfunc (JNIEnv * env, jobject thiz) {JSfunc(); }} – navillus
Отлично. Сложно... – Tom