运行 个 NativeScript 后台任务

Run tasks in background in NativeScript

我正在使用 NativeScript 2.0 并且我正在开发 Android 模块 这是不允许的在主线程运行!

是否有模块可用于 运行 后台线程中的函数?

或者是否可以在 "native" JavaScript 代码(不是 TypeScript!)中使用 AsyncTask class 之类的东西?

那么你应该看看网络工作者:

Web Worker 为后台线程中的 运行 脚本提供了一种简单的 Web 内容方式。工作线程可以在不干扰用户界面的情况下执行任务。

在此处查看更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers

我想你的答案可以在这篇文章中找到http://developer.telerik.com/featured/benefits-single-threading-model-nativescript/

基本上,目前唯一支持的选项是将代码封装到用原生 Android 编写的插件中。该团队正在努力支持某种与网络工作者一致的线程选项,但目前还没有任何支持。

背景可以看看这篇文章:http://developer.telerik.com/featured/benefits-single-threading-model-nativescript/

也就是说,目前您最好的选择是使用此模块来实施 运行 和 WebWorkers:https://github.com/NathanaelA/nativescript-webworkers

nativescript 添加了网络工作者。 https://docs.nativescript.org/angular/core-concepts/multithreading-model.html

var worker = new Worker('myWorker');
worker.postMessage('hello');
worker.onmessage = function(msg) {
      console.log('answer from worker',msg.data);
}

在工人中myWorker.js

    require('globals'); // necessary to bootstrap tns modules on the new thread
    onmessage = function(msg) {
        postMessage('bye');
    }

正如 Nativescript 演示应用所证明的那样 single-threaded 模型很好,因为 运行 UI 线程上的所有内容都非常快。但是仍然如果你需要后台任务以防时间操作,Nativescript引入了Workers API.

我们知道,作为网络世界中的网络工作者。请务必记住,每次启动新工作线程时,都会增加应用程序的资源和内存占用。

如需进一步阅读,您可以参考 this 博客。