2017-01-02 9 views
0

nativescriptのWebワーカーはまだ未熟な状態です。つまり、ネイティブ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は、各労働者は全体のAPIへのフルアクセス権を持つフルwebworkerサポートしてきました。 WebWorkersからネイティブAPI全体に完全にアクセスできます。 Webワーカーが持つ唯一の制限は、AndroidとiOSがすでに持っている標準の制限です。つまり、別のスレッドからUI要素にアクセスしないでください。すべてのUI作業はメインスレッドで行われなければなりません。それを超えて、空は限界です。 WebWorkersは新しいスレッドで孤立したJSコードを実行しているので、新しいv8インスタンス全体をスピンアップします。彼らはまっすぐなAndroidやiOSスレッドよりも多くのメモリを使います。しかし、彼らはクロスプラットフォームです。

NativeScript-webworkersプラグインを参照している場合、公式のWebワーカーサポートが追加されるまでに、そのプラグイン(私が著者)が長い時間書かれました。はい、プラグインにはAPIの機能にアクセスできません。これはスレッド処理を行う能力を追加するためのストップギャップ対策でした。

関連する問題