Nativescript android: 手动初始化新线程
Nativescript android: manually initializing new thread
由于 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();
我相信你被误导了——从 v2.4 开始,NativeScript 就拥有完整的网络工作者支持,每个工作者都可以完全访问整个 API。所以你可以完美地从WebWorkers访问整个Nativeapi; webworkers 的唯一限制是 Android 和 iOS 已经有的标准限制——你不能从单独的线程访问 UI 元素,所有 UI工作必须在主线程上完成。除此之外,天空是极限。请注意,WebWorkers 确实启动了一个全新的 v8 实例,因为它们是 运行 新线程中的独立 JS 代码;所以他们使用比直接 Android 或 iOS 线程更多的内存。但它们是跨平台的。
现在,如果您指的是 NativeScript-webworkers 插件,那么该插件(我是作者)在添加官方 web worker 支持之前编写了很长时间;是的,该插件无法访问任何 API 内容。这是增加执行线程工作的能力的权宜之计。
由于 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();
我相信你被误导了——从 v2.4 开始,NativeScript 就拥有完整的网络工作者支持,每个工作者都可以完全访问整个 API。所以你可以完美地从WebWorkers访问整个Nativeapi; webworkers 的唯一限制是 Android 和 iOS 已经有的标准限制——你不能从单独的线程访问 UI 元素,所有 UI工作必须在主线程上完成。除此之外,天空是极限。请注意,WebWorkers 确实启动了一个全新的 v8 实例,因为它们是 运行 新线程中的独立 JS 代码;所以他们使用比直接 Android 或 iOS 线程更多的内存。但它们是跨平台的。
现在,如果您指的是 NativeScript-webworkers 插件,那么该插件(我是作者)在添加官方 web worker 支持之前编写了很长时间;是的,该插件无法访问任何 API 内容。这是增加执行线程工作的能力的权宜之计。