wanZ
wanZ
  • 发布:2015-10-28 23:47
  • 更新:2019-06-24 16:52
  • 阅读:3388

[wanZ] 原创Native.js 创建线程

分类:Native.js
function testThread()  
{  
    var App        = plus.android.runtimeMainActivity();  
    var Thread   = plus.ios.importClass("java.lang.Thread");  
    var Runnable = plus.android.implements( "java.lang.Runnable", {  
        "run":function( ){  
            while(1)  
            {  
                console.log( "Invoked Object’s wahaha: " );  
                Thread.sleep(1000);  
            }  
        }  
    } );  

        //方式1启动线程  
    App.runOnUiThread(Runnable)  
        //方式2启动线程  
    //var thd = new Thread(Runnable) ;   
    //thd.start();  
}

PS:现在的问题是用UI启动线程,sleep会导致UI卡死,强烈求官方开放获取当前View的功能!要不限制了好多功能,打击群众们的热情。

2015-10-28 23:47 负责人:无 分享
已邀请:
maq

maq

试验了一下,貌似即便用“方式2启动线程”,界面也会被卡死。

感觉这个方法不靠谱啊,js 引擎(应该是 v8 吧?)本身是单线程模型的,硬用 native.js 在子线程中调用同一个 context 里的 js 代码,难道不需要什么“线程安全”的措施么……

通过 native.js 只是调用系统接口创建了一个系统级的“线程”而已,而要想在这个线程里跑 js 代码,恐怕还需要设法创建一个独立的 js context 才可以。

  • wanZ (作者)

    恩,最起码要获取到View

    2015-11-11 12:32

  • maq

    那倒是,一个 WebView 就是一个独立的 js context,这样的话,需要一个单独的线程来完成一个复杂计算工作的时候,创建一个 WebView 就好了,hehe,虽然不像专门的 worker thread 那么轻量,但数量不多的时候似乎也可以接受。

    2015-11-11 13:47

y***@126.com

y***@126.com - 技术交流

不行啊,都阻塞了 ,还有别的方法不阻塞吗?

  • wanZ (作者)

    worker.js怎么样试过没

    2016-09-23 08:57

  • 7***@qq.com

    回复 wanZ:也不行,貌似worker只能传递简单的数据,在worker里面不能获取mui,plus对象,坑很多呀

    2017-04-03 19:32

FYC

FYC - 80后IT男

mark一下

该问题目前已经被锁定, 无法添加新回复