Nativescript android:手动初始化新线程

时间:2017-01-02 14:30:03

标签: android multithreading nativescript

由于nativescript webworkers仍处于起步阶段 - 这意味着我们无法访问本机API(这是一个非常划分的交易平台),因此尝试手动创建一个新的线程来放置我的套接字。代码编译成功,并运行。

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 个答案:

答案 0 :(得分:2)

我相信你被误导了 - 从v2.4开始,NativeScript已经拥有完整的webworker支持,每个工作人员都可以完全访问整个API。因此,您可以完美地从WebWorkers访问整个Native api; Web工作者拥有的唯一限制是Android和iOS已经拥有的标准限制 - 即您不从单独的线程访问UI元素,所有UI工作必须在主线程上完成。除此之外,天空是极限。请注意WebWorkers确实启动了一个全新的v8实例,因为它们在新线程中运行隔离的JS代码;所以他们比直接的Android或iOS线程使用更多的内存。但它们是跨平台的。

现在,如果您指的是NativeScript-webworkers插件,那么该插件(我是作者)是在添加官方Web工作者支持之前写的;是的,插件无法访问任何API的东西。这是一种权宜之计,可以增加一些执行线程工作的能力。