2017-01-02 2 views
0

Так как веб-работники nativescript все еще находятся в зачаточном состоянии - это означает, что мы не можем получить доступ к собственным API-интерфейсам (его довольно разрывом), пытался вручную создать новый поток, в который можно было бы отключить мои сокеты. компилируется успешно и работает тоже.Nativescript android: ручная инициализация новой темы

console.log(newThread) говорит, что я нахожусь в Thread[Thread-5,5,main] нити, что хорошо, я думаю. Однако, когда я проверяю, какой поток я из самого нового потока, он говорит CURRENT THREAD: MAIN THREAD - Thread[main,5,main]. Есть предположения?

var newThread = new java.lang.Thread(
    new java.lang.Runnable({ 
     run: function(){ 
      console.log("Running this code in new thread!"); 

      if(java.lang.Thread.currentThread() == android.os.Looper.getMainLooper().getThread()) { 
       // Current Thread is Main Thread. 
       console.log("CURRENT THREAD: MAIN THREAD - ", java.lang.Thread.currentThread()); 
      } else { 
       console.log("CURRENT THREAD: NOT MAIN THREAD - ", java.lang.Thread.currentThread()); 
      } 
     } 
    }) 
); 

console.log(newThread); 

newThread.start(); 
+1

Вы, кажется, неправильно проинформированы, нигде не говорится, что вы не можете получить доступ к родной apis у рабочего –

+0

Действительно, я был. Думал, что это (https://www.npmjs.com/package/nativescript-webworkers) был официальным ответом nativescript для многопоточности, но не проверял разработчика. Спасибо, что поняли! (все еще вышеупомянутая ошибка будет преследовать меня xD) – Starwave

+2

вы должны взглянуть на этот https://docs.nativescript.org/core-concepts/multithreading-model –

ответ

1

Я считаю, что вы дезинформировали - с v2.4, NativeScript была полная поддержка WebWorker, где каждый работник имеет полный доступ ко всему API. Таким образом, вы можете получить доступ ко всей Native api от WebWorkers; Единственный предел, который есть у веб-мастеров, является стандартным пределом, который уже существует у Android и iOS, - что вы не имеете доступа к элементам пользовательского интерфейса из отдельного потока, все работы пользовательского интерфейса должны выполняться в основном потоке. Кроме того, небо - это предел. Обратите внимание, что WebWorkers разворачивает целый новый экземпляр v8, поскольку в новом потоке они запускают изолированный JS-код; поэтому они используют больше памяти, чем прямой поток Android или iOS. Но они кросс-платформенные.

Теперь, если вы имеете в виду плагин NativeScript-webworkers, этот плагин (который я являюсь автором) был написан в течение долгого времени до того, как была добавлена ​​официальная поддержка веб-работников; и да, что плагин не имеет доступа к любому материалу API. Это была мера остановки, чтобы добавить некоторую способность выполнять многопоточную работу.

Смежные вопросы