Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

questions about background threads

Aberta
#1,262 6 comentários 2 reações 0 responsáveis Ver no GitHub

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

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de NativeScript/android

Todas as issues de NativeScript/android

Issues semelhantes

Mais issues de C++

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.