questions about background threads
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 15/100
- Tipo de issue
- Bug
- Clareza
- Precisa de esclarecimento
- Status de atividade
- Estagnada
- Stack de tecnologia
- android, java, javascript
- Domínio
- mobile-dev
Direção de pesquisa
Comece por test-app/runtime/src/main/java/com/tns/Runtime.java, por volta da linha 1152, e pela entrada dispatchCallJSMethodNative na linha 1162. Reproduza a chamada em uma thread em segundo plano e compare a recursão resultante de ActivityCallbacksImplementation.onStart com o stack trace relatado; o trabalho estará concluído quando a causa for identificada e o comportamento de thread suportado for documentado ou corrigido.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
I know you already said here that all JS runs in UI Thread but i would like to have another look at this.
The reason is that i found out that on IOS the Js code will run on the the thread in has been triggered.
This is actually an amazing feature. Thanks to that i managed to create an OpenCV module that can do live camera processing. In native the image processing is triggered from a background thread, then i call a JS delegate that modifies the image and returns it. All that happens in the background thread!.
It works amazingly. Imagine all the possibilities!
Now obviously i want to look at this on android. I immediately faced a wall on android as the runtime will always make sure the call to v8 JS will be done on the "worker" thread.
I wanted to try things so i decided to debug the runtime and modify the code so that it runs the v8 JS in the thread it is in.
To do that i simply modified the code to make it believe it is always in the worker thread
Now i get a weird error that i dont get. I end with a maximum call stack exceeded:
Process: org.nativescript.demovueopencv, PID: 2587
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:354)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
at java.util.concurrent.FutureTask.run(FutureTask.java:271)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
Caused by: com.tns.NativeScriptException:
Calling js method doInBackground failed
RangeError: Maximum call stack size exceeded
File: "file:///data/data/org.nativescript.demovueopencv/files/app/vendor.js, line: 39669, column: 14
StackTrace:
Frame: function:'ActivityCallbacksImplementation.onStart', file:'file:///data/data/org.nativescript.demovueopencv/files/app/vendor.js', line: 39669, column: 15
Frame: function:'NativeScriptActivity.onStart', file:'file:///data/data/org.nativescript.demovueopencv/files/app/vendor.js', line: 37027, column: 21
at com.tns.Runtime.callJSMethodNative(Native Method)
at com.tns.Runtime.dispatchCallJSMethodNative(Runtime.java:1162)
at com.tns.Runtime.callJSMethodImpl(Runtime.java:1041)
at com.tns.Runtime.callJSMethod(Runtime.java:1028)
at com.tns.Runtime.callJSMethod(Runtime.java:1008)
at com.tns.Runtime.callJSMethod(Runtime.java:1000)
at android.os.AsyncTask_bundle_283_42_AsyncTaskRunner.doInBackground(Unknown Source:20)
at android.os.AsyncTask$2.call(AsyncTask.java:333)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
... 4 more
It seems to appear in the native side which i dont get.
Can someone guide me on this?
- Linguagem predominante
- C++
- Estrelas
- 563
- Forks
- 144
- Merge médio
- 10h 46min
- PRs com merge (30d)
- 14
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de NativeScript/android
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 38/100
NativeScript/android#2039 · 1 comentário ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
NativeScript/android#2024 ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 20/100
NativeScript/android#2020 ·
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 42/100
NativeScript/android#2019 ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 55/100
NativeScript/android#1986 ·
Todas as issues de NativeScript/android
Issues semelhantes
-
ai_reviewed
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
ydb-platform/ydb#53869 · 3 comentários ·
-
bug cert blocker needs triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
project-chip/connectedhomeip#74373 ·
-
[request] tracy/0.14.1 Abertaupstream update
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
conan-io/conan-center-index#31035 ·
-
Bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
-
documentation
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 85/100
vllm-project/vllm-ascend#17329 ·